我不確定您打算如何處理qw
,但 就足以說明將不會使用@mass
的內容。
@array = qw(hello world);
會造成@array
被定義爲包含2個串,hello
和world
。這是剛剛簡寫:
@array = ('hello', 'world');
這就是爲什麼
@array=qw(@mass);
則計算結果爲('@mass')
- 用5個字符@mass
單一的文字字符串數組。
也許這就是你做錯了。如果您嘗試
@array = map { split /\s+/} @mass;
@mass
是行列表。每行有空格分隔的單詞或只是字母。這將每個 線像'ba ab a G'
分成列表像('ba', 'ab', 'a', 'G')
和@array
將 成爲字/字母一個列表 - 什麼最後一行所做的就是以split /\s+/
每一行映射。
然後,這是一個你想如何排序的問題。另請參閱其他答案。
哦,記得把後面的空間,當你寫出你的文件:
print $new (join " ", @mass1);
如果你想在每行被相互依賴對方的排序,這是一件容易的事:
$mass1 = join "\n", map { join " ", sort (split /\s+/) } @mass
這表示'對於@mass
中的每一行,在空間上分割,按空格重新排序並返回',並使用結果數組加入newline
以產生文件的輸出。
注意,您可以在sort
用比較喜歡滴等sort { $a cmp $b }
如果你的文件過大,則循環也許是謹慎的:
for my $mass (<$old>) {
my $sorted_line = join " ", sort (split /\s+/, $mass);
print $new "$sorted_line\n";
}
你想對信件或文字進行分類嗎?你的輸入文件包含什麼內容?像「A B d r g」這樣的東西?如果是這樣,它包含多行? – Faiz
我有一個包含文字和字母的文件,所以我必須按字母排序 – PYPL
因此'ba ab a'應該像'a ab ba'一樣變成? – Faiz