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
Regex 尝试在文件+附加文本的文本中匹配文件的部分名称_Regex_Perl_Match - Fatal编程技术网

Regex 尝试在文件+附加文本的文本中匹配文件的部分名称

Regex 尝试在文件+附加文本的文本中匹配文件的部分名称,regex,perl,match,Regex,Perl,Match,嗨,我正在尝试在文件+附加文本的文本中匹配文件的部分名称 基本上我有这样的文件名: PieceIwanttomatch_don't_care_about_this.txt 我正在尝试匹配文件名的前七个字母加上文件中的一个字符串,我没有任何运气 以下是我目前掌握的情况: use strict; use warnings; use File::Path qw(make_path remove_tree); my $calls_dir = "Ask/Parsed/Html/"; opendir(

嗨,我正在尝试在文件+附加文本的文本中匹配文件的部分名称

基本上我有这样的文件名:

PieceIwanttomatch_don't_care_about_this.txt
我正在尝试匹配文件名的前七个字母加上文件中的一个字符串,我没有任何运气

以下是我目前掌握的情况:

use strict;
use warnings;

use File::Path qw(make_path remove_tree);

my $calls_dir = "Ask/Parsed/Html/";
opendir(my $search_dir, $calls_dir) or die "$!\n";
my @files = grep /\.txt$/i, readdir $search_dir;
closedir $search_dir;

#print "Got ", scalar @files, " files\n";

#my %seen = ();
for my $file (@files) {

  my %seen         = ();
  my $current_file = $calls_dir . $file;
  open my $FILE, '<', $current_file or die "$file: $!\n";

  while (<$FILE>) {

    #if (/phone/i) {
    chomp;

    #if (/phone\s*(.*)\r?$/i) {
    #if (/^phone\s*:\s*(.*)\r?$/i) {
    #if (/Contact\s*(.*)\r?$/i) {
    #if (/^*(.*)team\s*(.*)\r?$/i) {

    print substr(${file}, 0, 7);

    if (/^(?=.* 'substr(${file}, 0, 7)')(?=.*management)/s) {

      $seen{$1} = 1;

      #print $file."\t"."$_\n";
      #open my $fh, '>', "Ask/Parsed/Html2/"."${file}.parsed_for_contact_us.txt" or die $!;

      make_path('Ask/Parsed/Html2/');
      open my $fh, '>', "Ask/Parsed/Html2/" . "${file}.parsed_for_management.txt" or die $!;
      #open my $fh, '>', "$_"."result".".txt" or die $!;

      #$fh->print("$file\t$_\n");
      $fh->print("$_\n");
      print "$_\n";

      #print "\t";
      print "\n";
      print "\t";

      #print "$_\n";
      #print "\t";
      #print "\n";

      foreach my $addr (sort keys %seen) {

      }
    }
  }

  close $FILE;
}
============================================================================= 在这个脚本运行之后,我会根据untitle.txt文件中的条目数量得到html文件,每个条目1个

我有四个示例文件,它们被命名为Activision_ask.html、Apple_ask.html、Atari_ask.html、Nintendo_ask.html。以下是一个文件Activion_ask.html的内容: =============================================================================

  use lib '/Users/lialin/perl5/lib/perl5';
          use strict; use warnings;
          use feature 'say';
     use File::Slurp 'slurp';  # makes it

 easy to read files.
     use Mojo;
     use Mojo::UserAgent;
     use URI;
     use File::Path qw(make_path remove_tree);


     #my $html_file = shift @ARGV; # take file from command lin

     my $calls_dir = "Ask/";
     opendir(my $search_dir, $calls_dir) or die "$!\n";
     my @html_files = grep /\.html$/i, readdir $search_dir;
     closedir $search_dir;
     #print "Got ", scalar @files, " files\n";

     #my %seen = ();
     foreach my $html_files (@html_files) {
        my %seen = ();
        my $current_file = $calls_dir . $html_files;
        open my $FILE, '<', $current_file or die "$html_files: $!\n";

     my $dom = Mojo::DOM->new(scalar slurp $calls_dir .$html_files);
     print $calls_dir .$html_files ;

     #for my $csshref ($dom->find('a[href]')->attr('href')->each) {
     #for my $link ($dom->find('a[href]')->attr('href')->each) {
     #  print $1;
     #say $1 #if $link->attr('href') =~ m{^https?://(.+?)/index\.php}s;
     make_path('Ask/Parsed/Html/');
     open my $fh, '>', "Ask/Parsed/Html/${html_files}.result.txt" or die $!;
     for my $csshref ($dom->find('a[href]')->attr('href')->each) {
     my $cssurl = URI->new($csshref)->abs($calls_dir .$html_files);

     #open my $fh, '>', "Ask/${html_files}.result.txt" or die $!;
     $fh->print("$html_files\n");
     $fh->print("$cssurl\n");
     #$fh->print("\t"."$_\n");
     #print "$cssurl\n";
     #print $file."\t"."$_\n";}}
    Activision_ask.html
     http://www.ask.com/answers/browse?     qsrc=167&q=Activision+video+game&qo=channelNavigation&o=0&l=dir
     Activision_ask.html
     http://www.ask.com/answers/browse?qsrc=167&q=Activision+video+game&o=0&l=dir#opensignin
     Activision_ask.html
     http://www.ask.com/answers/profile?qsrc=3099
     Activision_ask.html
     http://www.ask.com/answers/profile?qsrc=3099
     Activision_ask.html
     javascript:void(0);
     Activision_ask.html
     http://www.ask.com/advancedsearch?     qsrc=167&q=Activision+video+game&qo=channelNavigation&o=0&l=dir
     Activision_ask.html
     http://www.ask.com/?o=0&l=dir&qsrc=14137
     Activision_ask.html
     http://www.ask.com/pictures?q=Activision+video+game&qsrc=167&qo=channelNavigation&o=0&l=dir
     Activision_ask.html
     http://www.ask.com/news?q=Activision+video+game&qsrc=167&qo=channelNavigation&o=0&l=dir
     Activision_ask.html
     http://www.ask.com/youtube?q=Activision+video+game&qsrc=167&qo=channelNavigation&o=0&l=dir
     Activision_ask.html
     http://www.ask.com/shopping?q=Activision+video+game&qsrc=167&qo=channelNavigation&o=0&l=dir
     Activision_ask.html
     javascript:void(0);
     Activision_ask.html
     http://www.ask.com/maps?q=Activision+video+game&qsrc=167&qo=channelNavigation&o=0&l=dir
     Activision_ask.html
     javascript:void(0);
     Activision_ask.html
     http://www.ask.com/web?q=Video+Game+Cheats&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Video+Game+Tester&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Create+Your+Own+Video+Games&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=First+Video+Game+Invented&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Video+Game+Design&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Wii&qsrc=466&o=0&l=dir&qo=relatedSearchExpand
     Activision_ask.html
     http://www.ask.com/web?q=Video+Game+Designer+Career&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Video+Game+Companies&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Spider-man+3+Video+Game&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Video+Game+Walkthroughs&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Video+Game+Statistics&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Call+of+Duty+4&qsrc=466&o=0&l=dir&qo=relatedSearchExpand
     Activision_ask.html
     http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Daps&field-     keywords=activision&x=0&y=0&tag=askcom05-20
     Activision_ask.html
     http://www.amazon.com/Activision-Anthology-PlayStation-  2/dp/B00006Z7HQ%3Fpsc%3D1%26SubscriptionId%3D06KMPSHEDSXXQMQVT482%26tag%3Daskcom05-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00006Z7HQ
Activision_ask.html
http://www.amazon.com/Activision-Anthology-PlayStation-2/dp/B00006Z7HQ%3Fpsc%3D1%26SubscriptionId%3D06KMPSHEDSXXQMQVT482%26tag%3Daskcom05-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00006Z7HQ
     Activision_ask.html
     http://www.amazon.com/Destiny-Xbox-360/dp/B002I096Q4%3Fpsc%3D1%26SubscriptionId%3D06KMPSHEDSXXQMQVT482%26tag%3Daskcom05-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB002I096Q4
     Activision_ask.html
     http://www.amazon.com/Destiny-Xbox-360/dp/B002I096Q4%3Fpsc%3D1%26SubscriptionId%3D06KMPSHEDSXXQMQVT482%26tag%3Daskcom05-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB002I096Q4
     Activision_ask.html
     http://www.amazon.com/Skylanders-Trap-Team-Not-Machine-Specific/dp/B00NCA6ZT0%3Fpsc%3D1%26SubscriptionId%3D06KMPSHEDSXXQMQVT482%26tag%3Daskcom05-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00NCA6ZT0
     Activision_ask.html
     http://www.amazon.com/Skylanders-Trap-Team-Not-Machine-Specific/dp/B00NCA6ZT0%3Fpsc%3D1%26SubscriptionId%3D06KMPSHEDSXXQMQVT482%26tag%3Daskcom05-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00NCA6ZT0
     Activision_ask.html
     http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Daps&field-keywords=activision&x=0&y=0&tag=askcom05-20
     Activision_ask.html
     http://www.ask.com/wiki/Activision
     Activision_ask.html
     http://www.ask.com/wiki/Activision
     Activision_ask.html
     http://en.wikipedia.org/wiki/File:Activision.svg
     Activision_ask.html
     http://www.ask.com/allabout?q=video%20game%20publisher&qsrc=470
     Activision_ask.html
     http://www.ask.com/allabout?q=video%20game%20console&qsrc=470
     Activision_ask.html
     http://www.ask.com/allabout?q=Atari%202600&qsrc=470
     Activision_ask.html
     http://www.ask.com/wiki/Activision
     Activision_ask.html
     http://www.ask.com/wiki/Activision#Upcoming_games
     Activision_ask.html
     http://www.ask.com/wiki/Activision#References
     Activision_ask.html
     http://en.wikipedia.org/wiki/Activision
     Activision_ask.html
     http://www.ask.com/web?q=Who+was+the+Video+game+publisher+of+LOOM%3F&qsrc=469&o=0&l=dir&qo=relatedQuestions
     Activision_ask.html
     http://www.ask.com/web?q=Activision+video+game&qsrc=3060&o=0&l=dir
     Activision_ask.html
     http://www.activision.com/
     Activision_ask.html
     http://www.activision.com/games
     Activision_ask.html
     http://clk.about.com?zi=13/1tO&ity=boostOrg&o=0&ldid=4451&eng=boost&zu=http://vgstrategies.about.com/od/gameboycheatscodes/a/Activision-Anthology.htm
     http://www.gametrailers.com/company/pou3yf/activision
     Activision_ask.html
     http://www.cnbc.com/id/102026893
     Activision_ask.html
     http://www.giantbomb.com/activision/3010-78/
     Activision_ask.html
     http://www.ask.com/web?q=History+of+Video+Game+Systems&qsrc=467&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/mobile?&o=0&l=dir&qsrc=0
     Activision_ask.html
     http://help.ask.com
     Activision_ask.html
     http://feedback.ask.com
第二个脚本从上面的html文件中提取所有链接,并将其放入另一个文件中。下面是脚本:

=============================================================================

  use lib '/Users/lialin/perl5/lib/perl5';
          use strict; use warnings;
          use feature 'say';
     use File::Slurp 'slurp';  # makes it

 easy to read files.
     use Mojo;
     use Mojo::UserAgent;
     use URI;
     use File::Path qw(make_path remove_tree);


     #my $html_file = shift @ARGV; # take file from command lin

     my $calls_dir = "Ask/";
     opendir(my $search_dir, $calls_dir) or die "$!\n";
     my @html_files = grep /\.html$/i, readdir $search_dir;
     closedir $search_dir;
     #print "Got ", scalar @files, " files\n";

     #my %seen = ();
     foreach my $html_files (@html_files) {
        my %seen = ();
        my $current_file = $calls_dir . $html_files;
        open my $FILE, '<', $current_file or die "$html_files: $!\n";

     my $dom = Mojo::DOM->new(scalar slurp $calls_dir .$html_files);
     print $calls_dir .$html_files ;

     #for my $csshref ($dom->find('a[href]')->attr('href')->each) {
     #for my $link ($dom->find('a[href]')->attr('href')->each) {
     #  print $1;
     #say $1 #if $link->attr('href') =~ m{^https?://(.+?)/index\.php}s;
     make_path('Ask/Parsed/Html/');
     open my $fh, '>', "Ask/Parsed/Html/${html_files}.result.txt" or die $!;
     for my $csshref ($dom->find('a[href]')->attr('href')->each) {
     my $cssurl = URI->new($csshref)->abs($calls_dir .$html_files);

     #open my $fh, '>', "Ask/${html_files}.result.txt" or die $!;
     $fh->print("$html_files\n");
     $fh->print("$cssurl\n");
     #$fh->print("\t"."$_\n");
     #print "$cssurl\n";
     #print $file."\t"."$_\n";}}
    Activision_ask.html
     http://www.ask.com/answers/browse?     qsrc=167&q=Activision+video+game&qo=channelNavigation&o=0&l=dir
     Activision_ask.html
     http://www.ask.com/answers/browse?qsrc=167&q=Activision+video+game&o=0&l=dir#opensignin
     Activision_ask.html
     http://www.ask.com/answers/profile?qsrc=3099
     Activision_ask.html
     http://www.ask.com/answers/profile?qsrc=3099
     Activision_ask.html
     javascript:void(0);
     Activision_ask.html
     http://www.ask.com/advancedsearch?     qsrc=167&q=Activision+video+game&qo=channelNavigation&o=0&l=dir
     Activision_ask.html
     http://www.ask.com/?o=0&l=dir&qsrc=14137
     Activision_ask.html
     http://www.ask.com/pictures?q=Activision+video+game&qsrc=167&qo=channelNavigation&o=0&l=dir
     Activision_ask.html
     http://www.ask.com/news?q=Activision+video+game&qsrc=167&qo=channelNavigation&o=0&l=dir
     Activision_ask.html
     http://www.ask.com/youtube?q=Activision+video+game&qsrc=167&qo=channelNavigation&o=0&l=dir
     Activision_ask.html
     http://www.ask.com/shopping?q=Activision+video+game&qsrc=167&qo=channelNavigation&o=0&l=dir
     Activision_ask.html
     javascript:void(0);
     Activision_ask.html
     http://www.ask.com/maps?q=Activision+video+game&qsrc=167&qo=channelNavigation&o=0&l=dir
     Activision_ask.html
     javascript:void(0);
     Activision_ask.html
     http://www.ask.com/web?q=Video+Game+Cheats&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Video+Game+Tester&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Create+Your+Own+Video+Games&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=First+Video+Game+Invented&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Video+Game+Design&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Wii&qsrc=466&o=0&l=dir&qo=relatedSearchExpand
     Activision_ask.html
     http://www.ask.com/web?q=Video+Game+Designer+Career&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Video+Game+Companies&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Spider-man+3+Video+Game&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Video+Game+Walkthroughs&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Video+Game+Statistics&qsrc=466&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/web?q=Call+of+Duty+4&qsrc=466&o=0&l=dir&qo=relatedSearchExpand
     Activision_ask.html
     http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Daps&field-     keywords=activision&x=0&y=0&tag=askcom05-20
     Activision_ask.html
     http://www.amazon.com/Activision-Anthology-PlayStation-  2/dp/B00006Z7HQ%3Fpsc%3D1%26SubscriptionId%3D06KMPSHEDSXXQMQVT482%26tag%3Daskcom05-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00006Z7HQ
Activision_ask.html
http://www.amazon.com/Activision-Anthology-PlayStation-2/dp/B00006Z7HQ%3Fpsc%3D1%26SubscriptionId%3D06KMPSHEDSXXQMQVT482%26tag%3Daskcom05-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00006Z7HQ
     Activision_ask.html
     http://www.amazon.com/Destiny-Xbox-360/dp/B002I096Q4%3Fpsc%3D1%26SubscriptionId%3D06KMPSHEDSXXQMQVT482%26tag%3Daskcom05-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB002I096Q4
     Activision_ask.html
     http://www.amazon.com/Destiny-Xbox-360/dp/B002I096Q4%3Fpsc%3D1%26SubscriptionId%3D06KMPSHEDSXXQMQVT482%26tag%3Daskcom05-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB002I096Q4
     Activision_ask.html
     http://www.amazon.com/Skylanders-Trap-Team-Not-Machine-Specific/dp/B00NCA6ZT0%3Fpsc%3D1%26SubscriptionId%3D06KMPSHEDSXXQMQVT482%26tag%3Daskcom05-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00NCA6ZT0
     Activision_ask.html
     http://www.amazon.com/Skylanders-Trap-Team-Not-Machine-Specific/dp/B00NCA6ZT0%3Fpsc%3D1%26SubscriptionId%3D06KMPSHEDSXXQMQVT482%26tag%3Daskcom05-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00NCA6ZT0
     Activision_ask.html
     http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Daps&field-keywords=activision&x=0&y=0&tag=askcom05-20
     Activision_ask.html
     http://www.ask.com/wiki/Activision
     Activision_ask.html
     http://www.ask.com/wiki/Activision
     Activision_ask.html
     http://en.wikipedia.org/wiki/File:Activision.svg
     Activision_ask.html
     http://www.ask.com/allabout?q=video%20game%20publisher&qsrc=470
     Activision_ask.html
     http://www.ask.com/allabout?q=video%20game%20console&qsrc=470
     Activision_ask.html
     http://www.ask.com/allabout?q=Atari%202600&qsrc=470
     Activision_ask.html
     http://www.ask.com/wiki/Activision
     Activision_ask.html
     http://www.ask.com/wiki/Activision#Upcoming_games
     Activision_ask.html
     http://www.ask.com/wiki/Activision#References
     Activision_ask.html
     http://en.wikipedia.org/wiki/Activision
     Activision_ask.html
     http://www.ask.com/web?q=Who+was+the+Video+game+publisher+of+LOOM%3F&qsrc=469&o=0&l=dir&qo=relatedQuestions
     Activision_ask.html
     http://www.ask.com/web?q=Activision+video+game&qsrc=3060&o=0&l=dir
     Activision_ask.html
     http://www.activision.com/
     Activision_ask.html
     http://www.activision.com/games
     Activision_ask.html
     http://clk.about.com?zi=13/1tO&ity=boostOrg&o=0&ldid=4451&eng=boost&zu=http://vgstrategies.about.com/od/gameboycheatscodes/a/Activision-Anthology.htm
     http://www.gametrailers.com/company/pou3yf/activision
     Activision_ask.html
     http://www.cnbc.com/id/102026893
     Activision_ask.html
     http://www.giantbomb.com/activision/3010-78/
     Activision_ask.html
     http://www.ask.com/web?q=History+of+Video+Game+Systems&qsrc=467&o=0&l=dir&qo=relatedSearchNarrow
     Activision_ask.html
     http://www.ask.com/mobile?&o=0&l=dir&qsrc=0
     Activision_ask.html
     http://help.ask.com
     Activision_ask.html
     http://feedback.ask.com
============================================================================= 现在我正在编写最后一个脚本,它将使用文件名和字符串的一部分从包含匹配或接近匹配文本的文件中读取一行或多行

在上面的例子中,我对文件名中带有“Activision”一词的URL和其中的“game”一词很感兴趣

我的文件名显然非常大,文字游戏可能出现在文件名之前或之后

我希望这些解释和代码能帮助其他人理解我想要实现的目标

我现在遇到的问题是用于搜索字符串的regex命令。我正在努力使它不那么严格,无法使匹配正常工作


正如我前面提到的,我非常精通html和java,但我知道perl是这方面的合适语言,如果您查看我上面的代码,但试图学习并完成我的任务,我显然不是专家。

我不清楚您想做什么,但给出了示例文件名

PieceIwanttomatch_don't_care_about_this.txt
假设您要查找所有文件,其中包含前七个字符,也以您要编写的.txt结尾

if ( /^PieceIw.*\.txt$/ ) { ... }
我希望这有帮助

更新

好的,我认为您需要搜索目录中的所有.txt文件,查找包含文件名前N个字符以及其他指定字符串的行

如果您不知道哪一个将首先出现-文件名前缀或其他字符串-那么您的双重展望是正确的。一种改进是将字符串括在\Q…。\E中,它将转义所有非单词字符,以防止任何正则表达式元字符弄乱模式

另请注意以下几点

正如我在回答你之前的问题时所解释的,我使用了autodie。如果您运行的Perl版本早于v5.10,并且无法升级,那么您将无法执行此操作,并且必须分别检查每个文件操作的状态

为目录使用绝对路径很重要;否则,用户必须确保在运行程序之前拥有正确的当前工作目录

我将所有参数作为定义放在程序顶部,包括两个目录和要搜索的附加字符串

我使用glob而不是opendir/readdir/grep,因为它更整洁,所以文件名包含完整路径

输出


有点推测性,试着理解这里的字里行间

opendir(my $search_dir, $calls_dir) or die "$!\n";
my @files = grep /^${prefix}_/ grep /\.txt$/i, readdir $search_dir;
closedir $search_dir;
现在@files只包含名称以$prefix开头,后跟下划线的.txt文件。除此之外,您不想搜索任何其他文件。我在猜测下划线,但如果不是这样的话,您可能可以修改它以更好地满足您的需要

现在,仅搜索这些文件以查找匹配项

for my $file (@files) {
  my $current_file = $calls_dir . $file;
  open my $FILE, '<', $current_file or die "$file: $!\n";    
  while (<$FILE>) {
      print "$file\n$" if m/management/;
  }
}

在shell脚本的一行中。

如果正确缩进代码并在相关语句块之间添加空行,您会发现使用代码要容易得多。我在这里为大家做的就是添加了空格。您所说的正则表达式匹配可能是/^?=.'substr${file},0,7'?=.*management/s,但我看不出它应该做什么,因为您没有将前七个字符与任何其他字符进行比较。谢谢Borodin。我想举一个我正在尝试做的例子:假设我的文件名为nintendo_ask_parse.html。我正在尝试使用字符串任天堂+另一个字符串游戏在文件中找到一行并将其打印到另一个文件。因此代码几乎可以工作。可能是用户。我的第一个问题是,$file不仅返回文件名,还返回整个路径+文件名$前缀总是返回1。由于$file返回整个路径+文件名,因此写入失败。打印了一些变量来解决这个问题。如有任何修改意见,我们将不胜感激
e前缀将始终位于要返回的行中所需的前缀之前。@tlialin:对不起,我无法轻松测试我的代码,除非确保它可以编译。现在试试,更好。我这样修改它,我的$prefix=$basename=~/^.{6}/;并且得到了我想要的文件字符,太棒了!但我没有在输出中写入任何内容。我的订单错了,所以我改为推送@matches,$\uif/\Q$wanted\E.*\Q$prefix\E/x;但我还是不回任何火柴。下面是我试图返回的行的一个示例:从文件返回。看起来它应该匹配$wanted和$prefix。我们需要更宽松地使用正则表达式吗?再次感谢你的帮助!
OK
opendir(my $search_dir, $calls_dir) or die "$!\n";
my @files = grep /^${prefix}_/ grep /\.txt$/i, readdir $search_dir;
closedir $search_dir;
for my $file (@files) {
  my $current_file = $calls_dir . $file;
  open my $FILE, '<', $current_file or die "$file: $!\n";    
  while (<$FILE>) {
      print "$file\n$" if m/management/;
  }
}
grep management "$prefix"_*.txt >output