On Thu, 10 Jan 2013 17:56:18 +0530
punit jain <[email protected]> wrote:
> I need to get all the subdirectories of test and then read the file
> usersettings under that later on to do some processing. I wrote code
> below :-
> #!/usr/bin/perl
> use strict;
> use warnings;
> use File::Basename qw(basename dirname);
> use File::Find qw(find);
> use File::Find::Rule;
[...]
> find( sub {
> print $File::Find::name;
> if ($File::Find::name =~ /Contacts/ && -s
> $File::Find::name > 0 ) {
> print "$File::Find::name";
>
> # do some processing
> }
> }, $dir);
>
> }
>
> However I get :-
>
> Use of uninitialized value in print at new.pl line 21.
> Use of uninitialized value in pattern match (m//) at new.pl line 22.
I suspect the issue is likely to be that you're mixing File::Find and
File::Find::Rule - the latter also exports a find() method, so you may
be inadvertently calling File::Find::Rule's find() method, which
doesn't set $File::Find::name.
I would recommend changing your code to simply use File::Find::Rule
exclusively. Alternatively, call File::Find::find() instead of just
find().
--
David Precious ("bigpresh") <[email protected]>
http://www.preshweb.co.uk/ www.preshweb.co.uk/twitter
www.preshweb.co.uk/linkedin www.preshweb.co.uk/facebook
www.preshweb.co.uk/cpan www.preshweb.co.uk/github
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/