punit jain wrote:
Hi,

Hello,


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.

That is easy enough to do:

for my $file ( <test/*/usersettings> ) {
    open my $FH, '<', $file or die "Cannot open '$file' because: $!";
    # process $file contents here
    }


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 = {};

Why not just use a hash instead of a reference to a hash?


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");

perldoc -q quoting

          next if $dir eq $indir;


# I need to skip parent directory

         my $user = basename($dir);
         print "$user"."\n";

perldoc -q quoting

          print "$user\n";
OR:
          print $user . "\n";
OR:
          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.

Which lines above are 21 and 22?



John
--
Any intelligent fool can make things bigger and
more complex... It takes a touch of genius -
and a lot of courage to move in the opposite
direction.                   -- Albert Einstein

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to