Please see: perl doc File::Find## see what we got use File::Find; # Get $dirname from first command-line argument my $dirname = $parent; find( \&do_process, $dirname ); my ( $a, $b ); sub do_process { if ( -r $_ ) { my $file_name = $_; open( my $fh, '<', $file_name ); # Use three-arg open! while (<$fh>) { chomp(); if (/\btournament winner is 1.gonzaga\b/i) { $a = "$file_name: +$_"; } if (/\btournament winner is 2.miSTb/i) { $b = "$file_name: +$_"; } } } }
To set $a or $b repeatedly with a different value makes no sense. You need a more complex data structure to save all values. BTW: I would not use $a or $b as scalar values in a user script. These names have special meanings to Perl like in sort() and other places. I would not do anything complicated at all in a do_process() subroutine. Minimize the chance of a "blow up". File::Find does cd's to traverse the directory tree. If you "blow up" at some random point, you are in a different directory than where you started from and that can cause various problems.find( \&do_process, ($dirname) ); sub do_process { my $file_name = File::Fine::name; #there is no $_ or @_ context her +e .... }
Read the FAQ and then try again showing a simplified example.
This is good:
open( my $fh, '<', $file_name ); # Use three-arg open!
This is better:
open( my $fh, '<', $file_name ) or die "Can't open $file_name for read $!";
Update:
I would make this change:
Don't use an O/S specific command where there is no need for it. I'm running Windows and your program bombed because of this. Also, system() will launch another process (an "expensive" cpu thing) where there is no need for that either (slows things down).
say "-------system out---------"; #system("cat $out_file"); open my $fh, '<', $out_file or die "can't print $out_file! $!"; print while (<$fh>); close $fh; say "----------------";
I did get your script to run. It creates files underneath a "my_data" directory.
There is no need for File::Find
You have a single directory of directories:
For example:
=printsprint "OUTFILES*******************\n"; foreach my $directory (glob "my_data/*") { print "Directory: $directory\n"; foreach my $file (glob "$directory/*") { print " File=$file\n"; } }
OUTFILES******************* Directory: my_data/03-04-2019-22-09-24 File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.1.txt File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.13.txt File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.17.txt File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.21.txt File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.25.txt File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.29.txt File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.33.txt File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.37.txt File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.41.txt File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.45.txt File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.49.txt File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.5.txt File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.53.txt File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.57.txt File=my_data/03-04-2019-22-09-24/03-04-2019-22-09-24.9.txt Directory: my_data/03-04-2019-22-14-09 File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.1.txt File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.13.txt File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.17.txt File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.21.txt File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.25.txt File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.29.txt File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.33.txt File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.37.txt File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.41.txt File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.45.txt File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.49.txt File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.5.txt File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.53.txt File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.57.txt File=my_data/03-04-2019-22-14-09/03-04-2019-22-14-09.9.txt Directory: my_data/03-04-2019-22-14-55 File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.1.txt File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.13.txt File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.17.txt File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.21.txt File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.25.txt File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.29.txt File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.33.txt File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.37.txt File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.41.txt File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.45.txt File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.49.txt File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.5.txt File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.53.txt File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.57.txt File=my_data/03-04-2019-22-14-55/03-04-2019-22-14-55.9.txt Directory: my_data/03-04-2019-22-16-53 File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.1.txt File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.13.txt File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.17.txt File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.21.txt File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.25.txt File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.29.txt File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.33.txt File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.37.txt File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.41.txt File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.45.txt File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.49.txt File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.5.txt File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.53.txt File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.57.txt File=my_data/03-04-2019-22-16-53/03-04-2019-22-16-53.9.txt Directory: my_data/03-04-2019-22-20-00 File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.1.txt File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.13.txt File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.17.txt File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.21.txt File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.25.txt File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.29.txt File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.33.txt File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.37.txt File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.41.txt File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.45.txt File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.49.txt File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.5.txt File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.53.txt File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.57.txt File=my_data/03-04-2019-22-20-00/03-04-2019-22-20-00.9.txt Directory: my_data/03-04-2019-22-21-01 File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.1.txt File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.13.txt File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.17.txt File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.21.txt File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.25.txt File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.29.txt File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.33.txt File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.37.txt File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.41.txt File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.45.txt File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.49.txt File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.5.txt File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.53.txt File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.57.txt File=my_data/03-04-2019-22-21-01/03-04-2019-22-21-01.9.txt Directory: my_data/03-04-2019-22-24-54 File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.1.txt File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.13.txt File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.17.txt File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.21.txt File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.25.txt File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.29.txt File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.33.txt File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.37.txt File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.41.txt File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.45.txt File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.49.txt File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.5.txt File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.53.txt File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.57.txt File=my_data/03-04-2019-22-24-54/03-04-2019-22-24-54.9.txt Directory: my_data/03-04-2019-22-26-59 File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.1.txt File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.13.txt File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.17.txt File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.21.txt File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.25.txt File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.29.txt File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.33.txt File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.37.txt File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.41.txt File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.45.txt File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.49.txt File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.5.txt File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.53.txt File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.57.txt File=my_data/03-04-2019-22-26-59/03-04-2019-22-26-59.9.txt Directory: my_data/03-04-2019-22-28-51 File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.1.txt File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.13.txt File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.17.txt File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.21.txt File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.25.txt File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.29.txt File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.33.txt File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.37.txt File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.41.txt File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.45.txt File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.49.txt File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.5.txt File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.53.txt File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.57.txt File=my_data/03-04-2019-22-28-51/03-04-2019-22-28-51.9.txt =cut
In reply to Re: using File::Find to grep for text
by Marshall
in thread using File::Find to grep for text
by Aldebaran
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |