sub open_files {
my @files = @_;
my @lines;
foreach (@files){
print "$_\[1\]\n";
}
foreach my $f (@files){
print "$f\[2\]\n";
open(my $fh,'<',$f) or die " '$f' $!";
print "$fh\[3\]\n";
push(@lines,<$fh>);
close($fh);
}
return @lines;
}
嗨,我打開文件的絕對路徑存儲在一個數組中存在問題。Glob是不同的值錯誤打開文件和讀取
我想要做的是通過數組並打開每個文件,然後將它們的數據存儲在@lines
數組中,然後關閉文件句柄。
但是我能夠打開.html
文件中存儲的第一個孩子目錄.e.g /a/abc.html or /b/bcd.html
但它是不開放(或解析),其在撒哈拉子目錄中的文件,如/a/aa/abc.html or /b/bb/bcd.html
我已經把在我的一些額外的print statements
在我的腳本和編號他們的輸出爲不同的打印行例如[1] [2] [3]
。
這是執行上面的代碼的結果:
完整的代碼是:pastebin Full code
/mnt/hgfs/PERL/assignment/test/a/aa/1 - Copy - Copy (2).htm[1]
/mnt/hgfs/PERL/assignment/test/a/aa/1 - Copy - Copy (2).htm[2]
GLOB(0x898ad20)[3]
/mnt/hgfs/PERL/assignment/test/b/bb/1 - Copy - Copy (2).htm[1]
/mnt/hgfs/PERL/assignment/test/b/bb/1 - Copy - Copy (2).htm[2]
GLOB(0x898ae40)[3]
/mnt/hgfs/PERL/assignment/test/a/1 - Copy - Copy (2).htm[1]
/mnt/hgfs/PERL/assignment/test/b/1 - Copy - Copy (2).htm[1]
/mnt/hgfs/PERL/assignment/test/c/1 - Copy - Copy (2).htm[1]
/mnt/hgfs/PERL/assignment/test/a/1 - Copy - Copy (2).htm[2]
GLOB(0x898ae40)[3]
/mnt/hgfs/PERL/assignment/test/b/1 - Copy - Copy (2).htm[2]
GLOB(0x898ae40)[3]
/mnt/hgfs/PERL/assignment/test/c/1 - Copy - Copy (2).htm[2]
GLOB(0x898ae40)[3]
如果你們在這裏需要完整的代碼是:pastebin Full code
錯了,我不明白你的問題。預期的產出是什麼?它應該是行得通的。你可以看到'[1]'和'[2]'之間永遠不會有區別嗎? – amon 2013-05-09 13:45:42
它不從這些文件中提取數據 ' /mnt/hgfs/PERL/assignment/test/a/aa/1 - Copy - Copy(2).htm [2] /mnt/hgfs/PERL/(2).htm [2] ' – 2013-05-09 13:46:39