Today around 1:53pm, Branden hammered out this masterpiece: : Lou Hevly <lou@visca.com> wrote: : > Greetings all: : > : > Given the following data: : > : > __DATA__ : > ae|Evans|Anne : > le|Evans|Louise : > he|Evans|Helen : > je|Evans| : > pete||Peter : > xs|Sanchez| : > rwj|| : > est|| : > : > 1) If there's a last name, the program should sort first by that and > : then by the firstname (if there is one); : > 2) If no last name, then sort by first name; : > 3) If neither last nor first name, then sort by username : > : > So the desired result is: : > : > est : > Evans : > Evans, Anne : > Evans, Helen : > Evans, Louise : > Peter : > rwj : > Sanchez : > : : : Two solutions, one with 102 characters and the other with 89. (Can it be : smaller?) Both expect to receive the file with the data as arguments, : instead of __DATA__, but changing <> to <DATA> would make it work with : __DATA__. : : : ($u,$l,$f)=split(/[|\n]/),push@a,$l?$f?"$l, $f":$l:$f||$u : while<>;$,=$\=$/;print sort{lc$a cmp lc$b}@a 84 characters: print sort{lc$a cmp lc$b} map{/(.*)\|(.*)\|(.*)/;($2?join', ',$2,$3||():$3||$1).$/}<> -- print(join(' ', qw(Casey R. Tweten)));my $sig={mail=>'crt@kiski.net',site=> 'http://home.kiski.net/~crt'};print "\n",'.'x(length($sig->{site})+6),"\n"; print map{$_.': '.$sig->{$_}."\n"}sort{$sig->{$a}cmp$sig->{$b}}keys%{$sig}; my $VERSION = '0.01'; #'patched' by Jerrad Pierce <belg4mit at MIT dot EDU> ==== Want to unsubscribe from Fun With Perl? Well, if you insist... ==== Send email to <fwp-request@technofile.org> with message _body_ ==== unsubscribe