回答
#!/usr/bin/env perl
use strict;
use warnings;
my @array;
open(my $fh, "<", "test.txt")
or die "Failed to open file: $!\n";
while(<$fh>) {
chomp;
push @array, $_;
}
close $fh;
print join " ", @array;
最基本的例子是這樣的:
#!/usr/bin/env perl
use strict;
use warnings;
open(F, "<", "test.txt") or die("Cannot open test.txt: $!\n"); # (1)
my @lines =();
while(<F>) { chomp; push(@lines, $_); } # (2)
close(F);
print "@lines"; # (3) stringify
(1)是文件被打開的地方。 (2)文件句柄在列表環境中很好地工作(標量/列表環境由左值定義),所以如果你將一個數組賦值給一個文件句柄,所有的行都被映射到這個數組中。這些行由輸入記錄分隔符$/
的值分隔(結束)。如果你use English;
,你可以使用$IRS
或$INPUT_RECORD_SEPARATOR
。該值默認爲換行符\n
;
雖然這似乎是一個不錯的主意,但我忘記了如果您打印所有行,結尾\n
也將被打印。拜阿姨。
原來的代碼是:
my @lines = <F>;
,而不是while
循環。這仍然是一個可行的替代方案,但應與chomp
ING然後印刷/字符串化所有元素交換(3):
for (@lines) { chomp; }
print "@lines";
(3)字符串化裝置的陣列轉換爲字符串,並插入之間的值$"
數組元素。這默認爲一個空格。
參見:the perlvar page。
所以實際的第二次嘗試是:
#!/usr/bin/env perl
use strict;
use warnings;
open(F, "<", "test.txt") or die("Cannot open test.txt: $!\n"); # (1)
my @lines = <F>; # (2)
close(F);
chomp(@lines);
print "@lines"; # (3) stringify
有快捷方式格格:'格格(@
use strict; use warnings my @array = <> ; chomp @array; print "@array";
它是由運行線);' – 2009-12-09 23:08:54
哦,我忘了。謝謝你的提示,伊萬! – 2009-12-10 11:09:50
還有一個答案供你選擇:
#!/usr/bin/env perl
open(FILE, "<", "test.txt") or die("Can't open file");
@lines = <FILE>;
close(FILE);
chomp(@lines);
print join(" ", @lines);
這裏是我的單排:
perl -e 'chomp(@a = <>); print join(" ", @a)' test.txt
說明:
- 讀取的文件由線成
@a
陣列 chomp(..)
- 刪除EOL符號用於使用空間作爲分隔- 打印結果
- 通文件名作爲參數的每一行
- 串連
@a
'perl -le'chomp(@a = <>);打印「@a」文件..' – 2009-12-09 23:11:57
@gbacon:感謝縮短版本 – 2009-12-09 23:28:12
謝謝。我從來沒有見過在同一時間加載和扼殺數組的簡寫方式。 – Echelon 2017-12-14 15:36:45
如果您發現自己經常啜食文件,則可以使用CP中的File::Slurp模塊AN:
use strict;
use warnings;
use File::Slurp;
my @lines = read_file('test.txt');
chomp @lines;
print "@lines\n";
這是我能想出的最簡單的版本:
perl -l040 -pe';' < test.txt
這大致相當於:
perl -pe'
chomp; $\ = $/; # -l
$\ = 040; # -040
'
和:
perl -e'
LINE:
while (<>) {
chomp; $\ = $/; # -l
$\ = " "; # -040
} continue {
print or die "-p destination: $!\n";
}
'
這是做到這一點(假設內部script.pl下面的代碼)的代碼:
scirpt.pl [your file]
- 1. 如何在BASH中將csv文件讀入二維數組中?
- 2. 如何在純C中將文本文件讀入數組?
- 3. 如何在Java中將數據從文件讀入數組?
- 4. 如何將.txt文件中的數字讀入整數數組?
- 5. 如何將.txt文件中的文本讀入數組?
- 6. 如何將文件中的數據讀入數組?
- 7. 將文本文件中的輸入讀入ruby中的數組
- 8. 如何在Python中將文件讀入二維數組?
- 9. 如何在java中將txt文件讀入2d數組?
- 10. 如何在java中將.csv文件讀入數組列表?
- 11. 將文件逐行讀入數組
- 12. 將文件讀入數組
- 13. 將文件讀入數組
- 14. 將文件讀入數組
- 15. Perl:將數組寫入文本文件
- 16. 如何正確地將文件的一行讀入數組?
- 17. 在C#中將文本文件讀入數組中
- 18. 如何將文件的行讀取到結構數組中
- 19. 如何在Perl中讀取Excel文件?
- 20. 如何在Perl中將數組數據插入到MySQL中?
- 21. 如何從std :: ifstream中將文件讀入unsigned char數組?
- 22. 如何將一個.txt文件逐行讀入C數組?
- 23. 如何將Java中的文本文件讀取到數組中
- 24. 如何將基於文本的數據文件讀入C中的數組?
- 25. 將txt文件讀入perl的散列
- 26. 如何在文件中將行插入到Perl文件的開頭?
- 27. 將文本文件中的數據讀入數組
- 28. 如何從Perl中的文本文件讀取輸入?
- 29. 在Java中將文本文件讀入char [] []數組
- 30. 將文本文件讀入數組
+1對於狹窄,詞法文件句柄和3-arg'open'。 :) – Ether 2009-12-09 22:44:47
你應該檢查文件是否成功打開。總是。或者'使用autodie;' – 2009-12-09 22:45:53
好點。固定! – Corey 2009-12-10 06:16:24