-1
我正在Perl的程序開始階段工作,讀取匹配特定模式的目錄中的所有文件,然後解析它們中的每一個。如果代碼與文件在同一個目錄下,它就可以工作,但是我希望它能夠工作,無論程序位於何處,只要程序中的路徑是正確的。任何人都可以幫我解決如何做到這一點?Perl:讀取一個目錄的所有文件,錯誤:沒有這樣的文件或目錄
這裏是我到目前爲止的代碼:
#!/usr/bin/perl5.16.2
my $dir = '/my/path/';
opendir(files, $dir) or die ("The directory could not be opened: $!");
@files = grep { /^jhu*/ && -f "$dir/$_" } readdir(files);
closedir(files);
foreach $file (@files) {
open(file, $file) or die "$!";
while(<file>) {
$line = $_;
chomp($line);
@cols = split(/\t/, $line);
print "$cols[4]\n";
}
}
close(file);
謝謝!
FAQ:這在文檔中有描述:'perldoc -f readdir' – toolic
您可以使用strict和warnings pragmas來改進您的代碼 – red0ct
有兩種核心方式可以列出文件系統目錄的內容,一種是使用[readdir](http://perldoc.perl.org/functions/readdir.html) 正如你所做的那樣,另一個是[glob](http://perldoc.perl.org/functions/glob.html) ,它實現了類似於命令行通配符語義的東西。這兩個將不分青紅皁白地包括目錄和文件。 'readdir'還有一個額外的問題,它會返回當前和父目錄的僞目錄'.'和'..'以及任何真實內容,並且只提供沒有任何關聯路徑的名稱 – Borodin