On Thu, 10 Jan 2013 17:56:18 +0530 punit jain <contactpunitj...@gmail.com> 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") <dav...@preshweb.co.uk> 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: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/