Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^2: How to read files in all subfolders?

by Lotus1 (Chaplain)
on Oct 21, 2012 at 17:59 UTC ( #1000231=note: print w/ replies, xml ) Need Help??


in reply to Re: How to read files in all subfolders?
in thread How to read files in all subfolders?

2teez,

I noticed a few things that could help the performance of your File::Find solution above.

In the search sub:

find( \&search_all_folder, $path ); sub search_all_folder { chomp $_; return if $_ eq '.' or $_ eq '..'; read_files($_) if (-f); }
  • The chomp isn't needed here since File::Find changes to the subdirectory and returns just the filename in $_.
  • The return if line isn't needed since in the next line the read_files() sub is only called for regular files. '.' and '..' are directories so they won't be included.
  • Since the OP specified only to print text files why not use the file test -T? The -f test will allow the program to attempt to print binary files which is pretty annoying if there are any lurking in a subdirectory.

In this function:

sub read_files { my ($filename) = @_; open my $fh, '<', $filename or die "can't open file: $!"; while (<$fh>) { print $_, $/; } }
  • Printing $/ when printing each line will cause an extra blank line to appear since you did not use chomp when the line was read.

And one question: what is the reason for using abs_path? I find that File::Find works fine with relative pathnames. Does it help the performance if an absolute pathname is given?


Comment on Re^2: How to read files in all subfolders?
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1000231]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (20)
As of 2014-07-29 17:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (225 votes), past polls