我在程序的最初阶段在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);
谢谢!
答案 0 :(得分:0)
之后,您只需要将目录添加到@files
的元素中。
foreach $file (@files) {
open(my $fh, "$dir/$file") or die "Can't open $dir/$file: $!";
while (<$fh>) { ... }
# ...
}
注意我还使用了一个词法文件句柄,而不是打开了file
这个由于各种原因而不受欢迎的问题。