David Greenberg wrote:
#!/usr/bin/perl
use strict;
open (GROUPFH, "<File1");
my @groups = ();
while (my $line = <GROUPFH>) {
     chomp ($line);
     push (@groups, $line);
}
close (GROUPFH);
open (USERFH, "File2");
my %group_to_users = ();
while (my $line = <USERFH>) {
     chomp ($line);
     my ($user, @user_groups) = split ('\s+', $line);
     for my $group (@user_groups) {
          push (@{$group_to_users{$group}}, $user) if $group_to_users{$group};
          $group_to_users{$group} = [$user] unless $group_to_users{$group};
     }
}
close (USERFH);
for my $group (@groups) {
     print $group . ":\n";
     for my $user (@{$group_to_users{$group}}) {
          print $user . "\n";
     }
     print "\n";
}

Or a little shorter:

#!/usr/bin/perl
use strict;
use warnings;
open my $GROUPS, 'File1' or die $!;
open my $USERS, 'File2' or die $!;

my %groups;
chomp and $groups{$_} = [] for <$GROUPS>;

while ( <$USERS> ) {
    my ($user, @groups) = split;
    $groups{$_} and push @{ $groups{$_} }, $user for @groups;
}

for ( sort keys %groups ) {
    print "$_:\n", ( join "\n", @{ $groups{$_} } ), "\n\n";
}

__END__

--
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl

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




Reply via email to