From: William Martell <mailto:[EMAIL PROTECTED]> wrote:
: Here you go. Try this then: my $users = read_passwd(); my @names; foreach (keys %{$users}) { next unless $users->{$_}{fullname}; my ($forename, $surname) = split(/\s+/, $users->{$_}{fullname}, 2); push @names, "$surname, $forename"; } print map { "$_\n" } sort @names; sub read_passwd { my %users; my @fields = qw/name pword uid gid fullname home shell/; while (<DATA>) { chomp; my %rec; @[EMAIL PROTECTED] = split(/:/); $users{$rec{name}} = \%rec; } return \%users; } __END__ 0:1:2:3:Porky Pig:5:6 7:8:9:10:Bug's Bunny:12:13 14:15:16:17:Donald Duck:19:20 21:22:23:24:Tweety Bird:26:27 To use a file, open it and replace DATA with that file handle: sub read_passwd { my $file = shift; my %users; my @fields = qw/name pword uid gid fullname home shell/; # don't clobber open file handles local *FH; open FH, $file or die "Cannot open $file: $!"; while ( <FH> ) { chomp; my %rec; @[EMAIL PROTECTED] = split(/:/); $users{$rec{name}} = \%rec; } return \%users; } HTH, Charles K. Clarkson -- Mobile Homes Specialist 254 968-8328 -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>