#ex_15-3 #Learning Perl, Appendix A, Exercise 15.3 open(PW,"/etc/passwd") || die "How did you get logged in?"; while () { chop; ($user, $pw, $uid, $gid, $gcos) = split(/:/); ($real) = split(/,/, $gcos); $real{$user} = $real; ($last = $real) =~ s/^(.*[^a-z])?([a-z]+.*).*/$2/i; $last =~ tr/A-Z/a-z/; $last{$user} = $last; } close(PW); for (sort by_last keys %last) { printf "%30s %8s\n", $real{$_}, $_; } sub by_last { ($last{$a} cmp $last{$b}) || ($a cmp $b) }