in reply to How can I sort my array numerically on part of the string?

I don't like this as much as your hash approach which has appeal, but this seems to work:

my @sorted = sort byPrefix @s; # sort the keys numerically sub byPrefix { # make copies so originals are preserved my ( $x, $y ) = ( $a, $b ); # get prefixes $x =~ s/:.+//; $y =~ s/:.+//; # RV $_=0; $x < $y && $_--; $x > $y && $_++; $_; }

Replies are listed 'Best First'.
Re^2: How can I sort my array numerically on part of the string?
by AnomalousMonk (Archbishop) on Dec 01, 2020 at 21:55 UTC
    $_=0;

    Shouldn't this be
        local $_ = 0;
    to avoid global variable side effects (see local)?

    $_=0; $x < $y && $_--; $x > $y && $_++; $_;

    And how does this code differ in effect from
        $x <=> $y;
    (see <=> in Equality Operators in perlop)?

    (And a small point, but , (comma) is used as the delimiter in the OPed example data instead of : (colon), which you use in the s/:.+// extraction substitutions.)


    Give a man a fish:  <%-{-{-{-<