--- Rodrick Brown <[EMAIL PROTECTED]> wrote:

> Is there a more efficient way to handle the method I
> choose to unroll my HoH.
> Thanks.
> 
> #!/usr/bin/perl -w
> use strict;
> use warnings;
> use Data::Dumper;
> 
> my @data = <STDIN>;
> 
> my ($user,$gid,$homedir,%userMap);
> foreach(@data) {
>   /^#/ and next;
>   /(\w+):/ and $user = $1;
>   /\w+:*:(\d+):/ and $gid = $1;
>   /.*:(.*)$/ and $homedir = $1;
>   $userMap{$homedir}->{$user} = $gid;
> }
> 
> #print Dumper(\%userMap);
> 
> while(my ($k0,$h0) = each(%userMap)) {
>   foreach my $shell ($k0) {
>     print $shell,"\n";
>     print "--------------\n";
>     while(my ($k1,$v0) = each(%$h0)) {
>       print "$k1 $v0\n";
>     }
>     print "\n";
>   }
>   #print $k,"\n\t",$_,"\n" foreach(values %$v);
> }
> 

Hello,

Just give my version.It does the same work and seems
more clear.

use strict;
use warnings;

my %hash;
open FD,'/etc/passwd' or die $!;
while(<FD>) {
    chomp;
    my ($user,$uid,$shell) = (split/:/)[0,2,6];
    $shell ||= 'null';
    push @{$hash{$shell}},[$user,$uid];
}
close FD;

for my $s (keys %hash) {
    print "\n$s\n--------\n";
    for my $p (@{$hash{$s}}) {
        print "@$p\n";
    }
}

__END__

HTH.


       
____________________________________________________________________________________
Moody friends. Drama queens. Your life? Nope! - their life, your story. Play 
Sims Stories at Yahoo! Games.
http://sims.yahoo.com/  

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to