On Fri, Jul 23, 2010 at 7:21 AM, Uri Guttman <u...@stemsystems.com> wrote: >>>>>> "KW" == Kenneth Wolcott <kennethwolc...@gmail.com> writes: > > KW> The current output is a set of zero or more space separated > KW> strings where each substring is a string of of three > KW> dash-separated substrings. > > you should always show sample input data and expected output (sorted > data). just describing it even when simple can be different than the > actual data. > > KW> I want to sort these space separated strings based on the middle of the > KW> dash-separated substring. > > KW> The regex for the space-separated sub string is not exactly, but close to > KW> the following regex. > > KW> [a-z0-9][a-z0-9]+-[A-Z][A-Z][A-Z]0z0r[1-9a-z][1-9]+-[c-z][a-z][1-9] > > blech. if you really have dash seperators, use split. whenever you think > separartor think split. > > KW> Here is what I tried with awk, tr and sort: > > and why would that matter in a perl question? keep on subject, how to > sort your data in perl > > KW> So should I do the same thing in Perl (ie: accumulate in an array > KW> with push, then split, then sort?, then print)? > > basically that is correct. there are various ways to handle that > too. one perl classic way is the schwartzian transform. a faster variant > is the GRT. you can learn how to code them from the Sort::Maker module > which can generate sort code in 4 styles. all you need to do is describe > how to get the key from the record. split makes that easy: > > (split /-/, $record)[1] > > that gets the middle field from a record. > > KW> I need to keep the Perl is simple and as maintainable as possible. > > use that to start and either use the module and see what it generates or > google for those techniques and see what you can do. this is not > considered a complex sort at all. code up what you can and show it and > ask here for more help if you need. > > uri > > -- > Uri Guttman ------ ...@stemsystems.com -------- http://www.sysarch.com -- > ----- Perl Code Review , Architecture, Development, Training, Support ------ > --------- Gourmet Hot Cocoa Mix ---- http://bestfriendscocoa.com --------- > > -- > To unsubscribe, e-mail: beginners-unsubscr...@perl.org > For additional commands, e-mail: beginners-h...@perl.org > http://learn.perl.org/ > > >
For doing the Sort, you may consider the schwartzian_transform sub schwartzian_transform(&@) { my $compute = shift; return map { $_->[1] } sort { $a->[0] cmp $b->[0] } map { [ $compute->(), $_ ] } @_; } schwartzian_transform { (split /-/, $_)[1] } @array; More information on: http://sites.google.com/site/oleberperlrecipes/recipes/01-variables/02-arrays/03-sort-arrays?pli=1 Best regards Marcos Rebelo -- Marcos Rebelo http://oleber.freehostia.com Milan Perl Mongers leader http://milan.pm.org Webmaster of http://sites.google.com/site/oleberperlrecipes/ -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/