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>


Reply via email to