http://qs321.pair.com?node_id=328194


in reply to 'Permission Denied' error from File::Find

Geetings, witandhumor!

After running your code on my Win32 machine, I received the same (or a similar) error about permissions. A few well placed print statements and switches flipped later, I found that File::Find was finding the . file/directory first. The open is the part that seems to fail when it attempts to open the . file/directory.

I did a few file tests (-r and -f) to find only readable plain files. This happily skips over the . and .. files/directories.

Here's code that does not get the same file permission error:
#!c:\perl\bin\perl.exe -w use strict; use File::Find; use Carp; #variables my ($directory,$file,$text); print "Enter search text: "; $text = <STDIN>; chomp $text; $directory = 'c:\my_directory'; find (\&search,$directory); sub search { my $file = $File::Find::name; if (-r $file && -f $file) { open (FILE, "$file") or carp "Guess what, it didn't work!\n$!"; my $line = <FILE>; close FILE; print "$text - $file" if $line =~ /$text/; } }
Hope this helps!

-Daruma

Replies are listed 'Best First'.
Re: Re: 'Permission Denied' error from File::Find
by witandhumor (Pilgrim) on Feb 12, 2004 at 03:18 UTC
    All:
    With all of the help given to me here(and some one-on-one tutoring) I was able to work out most of my issues! Thank you very much!!!!!!!!!!!

    Here is my most recent attempt..getting there

    #!c:\perl\bin\perl.exe -w use strict; use File::Find; #variables my ($directory,$file,$text); print "Enter search text: "; $text = <STDIN>; chomp $text; $directory = 'c:\my_directory'; find (\&search,$directory); sub search { my $file = $File::Find::name; if (-r $file && -f $file) { open (FILE, "$file") or die "Guess what, it didn't work! $!\n"; while (my $line = <FILE>) { print "$text - $file\n" if $line =~ /$text/; } } close FILE; }