Hi, I have a requirement where I have directory structure like : -
test --> test/user1/files/, test/user2/files/, test/user3/files/ etc. under sub-directories with usernames I have file with name usersettings. So the final structure as : - test / user1 / usersettings /files/ user2 / usersettings /files/ user3 / usersettings /files/ user4 / usersettings etc 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; my $indir = shift; my $Users = {}; my @userdirs=File::Find::Rule->maxdepth(1)->directory->in($indir); # this will give me user directories which I want only to depth 1. foreach my $dir(@userdirs){ next if($dir eq "$indir"); # I need to skip parent directory my $user = basename($dir); print "$user"."\n"; 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 think the issue is it is still using depth as 1. How do I reset it ? Regards.