1
我datafile.txt後有文件名列表:的Perl:打印多個文件的內容從文件中讀取文件列表
/tmp/dir1/file1
/tmp/dir2/file2
/tmp/dir3/file3
...
/tmp/dir100/file100
我希望我的Perl腳本來讀取這個文件datafile.txt,讓它從datafile.txt打印每個文件的內容。
也就是說,我該如何在Perl中完成以下任務?
for file in `cat datafile.txt`; do
cat $file
done
我嘗試以下,並有難度:
use strict;
use warnings;
open(my $fh, '<', '/tmp/datafile.txt');
foreach my $filename (<$fh>) {
open(my $fh1, '<', $filename);
foreach(<$fh1>) {
chomp;
print "$_\n";
}
close $fh1;
}
close $fh;
你忘了'chomp $ filename' – yonyon100
你已經得到了解決問題的答案,以'chomp'來打開文件名。但是請注意 - 'foreach(<$fh>)'將所有行讀入列表,然後遍歷它。一旦你從一個文件句柄讀取,你想逐行執行(除非有_very_特定的原因),所以使用'while(<$fh>)'代替。順便說一句,只是打印出行,你可以'打印,而<$fh1>;'(但爲了更多的處理,你大多需要一個循環,當然)。 – zdim
爲什麼'chomp;打印「$ _ \ n」而不是「打印」$ _「'?也就是說,爲什麼要刪除換行符並只是將其添加回來? –