Perl:读取目录的所有文件,错误:没有这样的文件或目录

时间:2015-11-16 21:38:13

标签: 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);

谢谢!

1 个答案:

答案 0 :(得分:0)

之后,您只需要将目录添加到@files的元素中。

foreach $file (@files) {
    open(my $fh, "$dir/$file") or die "Can't open $dir/$file: $!";
    while (<$fh>) { ... }
    # ...
}

注意我还使用了一个词法文件句柄,而不是打开了file这个由于各种原因而不受欢迎的问题。

相关问题