in reply to Re: Sorting numerials first and then numerials with alpha characters last
in thread Sorting numerials first and then numerials with alpha characters last

not sure why you assign to $_ here ...

>  $_ = [$1, $2, $_]

But I felt tempted to try a variation with named captures for clarity. (tests borrowed from Hauke's post)

use strict; use warnings; use Data::Dump; use Test::More; my @in = ( "2bc", "1", "12c", "12", "21", "1", "1a", "2", "2", "2", "2", "3", "35", "31", "2b", "4", "42", "5", "51", "2ac", "52", "6", "7" ); my @exp = ( "1", "2", "3", "4", "5", "6", "7", "12", "21", "31", "35","42", "51", "52", "1a", "2ac", "2b", "2bc", "12c", ); my %in; @in{@in}=(); # unique my @got = map { $_->{orig} } sort { $a->{alpha} cmp $b->{alpha} || $a->{num} <=> $b->{num} } map { /(?<num>\d+)(?<alpha>[a-z]*)/; { orig => $_, %+ } } keys %in; is_deeply(\@exp,\@got) or ddx [\@exp,\@got]; done_testing;

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

  • Comment on Re^2: Sorting numerials first and then numerials with alpha characters last (named captures)
  • Select or Download Code