And strict complains, because the arguments aren't numeric.
Actually, it's warnings that is complaining.
If you turn stricts off and keep warnings on, you get the message, which is, appropriately enough, a "warning."
When strict complains, it usually means that your program can't execute at all.
#!/usr/bin/perl -w use strict; my @x = qw( 1xxx 2xxx 300x 10xx ); @x = sort @x; print "default sort: @x\n"; @x = sort {local $^W; $a <=> $b} @x; print "numeric sort: @x\n";
Transforming the comparison elements with int($a) won't keep warnings silent either. Turning off warnings temporarily gets rid of the messages, but I wouldn't recommend it. Warnings are useful because they tell you that something is wrong and needs your attention.

Therefore I would go for the third solution.
However, your regex is not working. It seems to be doing something in your particular program, because the array was already sorted by the previous statement.
Try this.
@x = qw( 5xxx 2xxx 300x 10xx ); @x = sort {$a =~/^d+/ <=> $b =~/^d+/} @x; # WRONG print "regex sort: @x\n";
And your array is not sorted at all.
A better sorting should be
@x = qw( 5xxx 2xxx 300x 10xx ); @x = sort {my ($y) = $a =~/^(\d+)/; my ($z) = $b =~/^(\d+)/; $y <=> $z} @x; print "regex sort: @x\n";
_ _ _ _ (_|| | |(_|>< _|

In reply to Re: Sort Says "not numeric" then sorts numeric anyway? by gmax
in thread Sort Says "not numeric" then sorts numeric anyway? by Cody Pendant

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.