Hey All, I just figured out the answer to my own question....
It is as follows... use Data::Dumper; $file = '/etc/passwd'; $procrc = ".procmailrc"; sub view_users{ open PASSWD, "$file" or die "$file: $!\n"; flock(PASSWD, 2) || die "Can't lock $file exclusively: $!"; while ($lines = <PASSWD>) { @lines = split (/:/, $lines); if ($lines[0] != /^\*/) { #Do not print users witha an asterix (*) } elsif ( $lines[3] == 45 ) { $users{$lines[0]} = $lines[4]; } } foreach $user_check (keys (%users)) { if (-e "/home/$user_check/$procrc") { $popusers{$user_check}{$lines[4]} = 'YES'; } else { $popusers{$user_check}{$lines[4]} = 'NO'; } } #Delete any users with a * before their name #delete @users{grep /^\*/, keys %users}; #delete @{$popusers{$user_check}}{grep /^\*/, keys %{$popusers{$user_check}}}; return %popusers; close PASSWD; } view_users(); print Data::Dumper -> Dump( [\%popusers], ['*popusers']) I do how ever have one problem that looks similar to the following... %popusers = ( 'user1' => { 'Fullname1' => 'YES', } '*user2' => { 'Fullname2' => 'NO', } 'user3' => { 'Fullname3' => 'YES', } '*user4' => { 'Fullname4' => 'YES' } ); Some of the %popusers keys have a star that I want deleted... I did try the following... delete @{$popusers{$user_check}}{grep /^\*/, keys %{$popusers{$user_check}}}; but that didn't work. Does any one have any ideas? Regards, Dan -----Original Message----- From: Daniel Falkenberg Sent: Monday, 17 December 2001 3:28 PM To: [EMAIL PROTECTED] Subject: Hash of a hash question... Hello all! Can some one help me with the following hash of a hash? I need to create a hash of a hash in the following format... %popusers = ( 'user1' => { 'Fullname1' => 'YES', } 'user2' => { 'Fullname2' => 'NO', } 'user3' => { 'Fullname3' => 'YES', } 'user4' => { 'Fullname4' => 'YES' } ); So far if I do the follwowing... #!/usr/bin/perl -w $file = '/etc/passwd'; sub view_users{ open PASSWD, "$file" or die "$file: $!\n"; flock(PASSWD, 2) || die "Can't lock $file exclusively: $!"; while ($lines = <PASSWD>) { @lines = split (/:/, $lines); if ($lines[0] != /^\*/) { #Do not print users witha an asterix (*) } elsif ( $lines[3] == 45 ) { $users{$lines[0]} = $lines[4]; } } #Delete any users with a * before their name delete @users{grep /^\*/, keys %users}; return %users; close PASSWD; } view_users(%users); Now this will print a hash like so %users ( 'user1' => 'Fullname1', 'user2' => 'Fullname2', 'user3' => 'Fullname3', 'user4' => 'Fullname4', }; But I also need it to add the following in... foreach $user_check (keys (%users)) { if (-e "/home/$user_check/$procrc") { $popusers_file{$user_check} = 'YES'; } else { $popusers_file{$user_check} = 'NO'; } } Which will do the following... %popusers_file ( 'user1' => 'YES', 'user2' => 'NO', 'user3' => 'NO', 'user4' => 'YES', }; So I need the values of %popusers_file to be the final values in %popusers. Is this possible? Regards, Dan -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]