"Casey R. Tweten" <crt@kiski.net> writes: > 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 Funny - I was playing around with almost the same piece of code. 80 characters: print sort{lc$a cmp lc$b}map{/(.*)\|(.*)\|(.*)/;($2?$3?"$2, $3":$2:$3||$1).$/}<> Jas ==== Want to unsubscribe from Fun With Perl? Well, if you insist... ==== Send email to <fwp-request@technofile.org> with message _body_ ==== unsubscribe