in reply to A "strange" behaviour, at least to me :)
It's evident that you're encountering a Perl parsing issue which can be addressed by changing:
@values = sort arraynosort( Values => \@orig_values );
to this
@values = sort ( arraynosort( Values => \@orig_values ) );
Using B::Deparse, we can see how Perl parses your original line using my:
perl -MO=Deparse -p -e 'my @values = arraynosort( Values => \@orig_val +ues );'
Partial output:
my(@values) = arraynosort('Values', \@orig_values);
Now with the sort:
perl -MO=Deparse -p -e '@values = sort arraynosort( Values => \@orig_v +alues );'
Partial output:
@values = (sort arraynosort 'Values', \@orig_values);
Note that Perl is not 'seeing' the clustering represented by parentheses, and this produces the issue your encountering. However, if you group using parentheses, Perl 'sees' it the way you likely expected it to work:
perl -MO=Deparse -p -e '@values = sort ( arraynosort( Values => \@orig +_values ) );'
Partial Output:
@values = sort(arraynosort('Values', \@orig_values));
Hope this helps!
|
|---|