Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Glob是不同的值打开文件并读取时出错_Linux_Perl_Recursion_Glob - Fatal编程技术网

Linux Glob是不同的值打开文件并读取时出错

Linux Glob是不同的值打开文件并读取时出错,linux,perl,recursion,glob,Linux,Perl,Recursion,Glob,如果你们需要这里的完整代码,它是:简短的回答是不会递归到子目录中 相反,请使用: 简而言之,它不会递归到子目录中 相反,请使用: 呃,我不明白你的问题。预期的产出是多少?它应该能正常工作。您可以看到,[1]和[2]之间不会有任何区别?它不是从这些文件中提取数据`/mnt/hgfs/PERL/assignment/test/a/aa/1-Copy-Copy(2).htm[2]/mnt/hgfs/PERL/assignment/test/b/bb/1-Copy-Copy(2).htm[2]`呃,我不

如果你们需要这里的完整代码,它是:

简短的回答是不会递归到子目录中

相反,请使用:

简而言之,它不会递归到子目录中

相反,请使用:


呃,我不明白你的问题。预期的产出是多少?它应该能正常工作。您可以看到,
[1]
[2]
之间不会有任何区别?它不是从这些文件中提取数据`/mnt/hgfs/PERL/assignment/test/a/aa/1-Copy-Copy(2).htm[2]/mnt/hgfs/PERL/assignment/test/b/bb/1-Copy-Copy(2).htm[2]`呃,我不明白您的问题。预期的产出是多少?它应该能正常工作。您可以看到,
[1]
[2]
之间不会有任何区别。它不是从这些文件中提取数据`/mnt/hgfs/PERL/assignment/test/a/aa/1-Copy-Copy(2).htm[2]/mnt/hgfs/PERL/assignment/test/b/1-Copy-Copy(2).htm[2]“嗯,我是为一个理工项目做这件事的,作业要求我只
使用Cwd()
和其他方法,因此我必须手动递归以获取所有子目录,然后获取其中的文件,然后解析它们并从html文件井收集数据,例如电子邮件地址。。别指望我帮你做家庭作业。让我来介绍马克·杰森·多米努斯(Mark Jason Dominus)在中关于递归的优秀章节。不,请不要误解我,我正在尽我最大的努力,但由于我对perl缺乏了解,即使是一个小错误也会使我受挫,所以我把我的qn放在这里,以便你们可以指出我犯的任何小错误。这很好。但是,您没有发布代码的递归部分,因此有人会认为您没有。哦,我链接了它,可能您错过了它。我的整个代码都链接到了包含错误的框下方的pastebin,感谢您,我是为一个理工项目这么做的,作业要求我只
使用Cwd()
和其他方法,因此我必须手动递归以获取所有子目录,然后获取其中的文件,然后解析它们并从html文件井收集数据,例如电子邮件地址。。别指望我帮你做家庭作业。让我来介绍马克·杰森·多米努斯(Mark Jason Dominus)在中关于递归的优秀章节。不,请不要误解我,我正在尽我最大的努力,但由于我对perl缺乏了解,即使是一个小错误也会使我受挫,所以我把我的qn放在这里,以便你们可以指出我犯的任何小错误。这很好。但是,您没有发布代码的递归部分,因此人们会认为您没有。哦,我链接了它,可能您错过了它。我的整个代码都链接到了包含错误的框下方的pastebin感谢您的帮助。可能是我的递归部分导致了这个错误。谢谢你的帮助。可能错误是由于我的递归部分。
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;
}
/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]
use strict;
use warnings;
use feature 'say';
use File::Find 'find';

my @files;
find( sub { push @files, $File::Find::name if /\.html?$/ }, 'base_dir' );

say for @files;
use warnings;
use strict;

die "Usage: $0 (abs path to dir) " if @ARGV != 1;

my $dir = shift @ARGV;
our @html_files = (); 

file_find($dir);
print "html files: @html_files\n";

sub file_find {
    my $dir = shift;

    opendir my $dh, $dir or warn "$dir: $!";
    my @files = grep { $_ !~ /^\.{1,2}$/ } readdir $dh;
    closedir $dh;

    for my $file ( @files ) { 
        my $path = "$dir/$file";

        push @html_files, $file if $file =~ /\.html$/;
        file_find($path) if -d $path;
    }   
}