Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^6: Sorting based on any column

by aaron_baugher (Curate)
on May 21, 2015 at 13:39 UTC ( [id://1127349]=note: print w/replies, xml ) Need Help??


in reply to Re^5: Sorting based on any column
in thread Sorting based on any column

Its giving error "Use of uninitialized value in numeric comparison (<=>)"

That's because this is almost certainly not doing whatever you think it's doing:

$ab = "\$a";

That's taking the value of $a and appending it to a backslash and making it the value of $ab, so "11" becomes "\11". I'm guessing that you're trying to make $ab a reference to $a, but to do that you'd need to leave out the quotes, and that would also change the later code.

Personally, if I wanted to have a toggle between two different ways to sort, I'd do it like this (unless the sort comparison is very complex, in which case it should be in a separate subroutine anyway):

sub sort_array_by_column_asc_or_desc { my( $array, $column, $order ) = @_; if( $order eq 'desc' ){ return sort { put_descending_sort_comparison_here } @$array; } else { # default to ascending sort return sort { put_ascending_sort_comparison_here } @$array; } }

Note: the else there isn't necessary, but I like it because it makes the choice obvious.

Aaron B.
Available for small or large Perl jobs and *nix system administration; see my home node.

Replies are listed 'Best First'.
Re^7: Sorting based on any column
by AnomalousMonk (Archbishop) on May 21, 2015 at 15:08 UTC
    $ab = "\$a";

    That's taking the value of $a and appending it to a backslash ...

    Actually, it's escaping a  $ (dollar) character to make it a literal rather than a scalar sigil, which would result in scalar interpolation:

    c:\@Work\Perl\monks>perl -wMstrict -le "my $a = 'foo'; my $ab = qq{'\$a' '$a'}; print $ab; " '$a' 'foo'
    (I have to use  qq{} instead of  "" (double-quotes) to keep Windoze command line from going nuts with escapes.)


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

      Oh, of course. That's what I get for not trying it once to make sure. Thanks for correcting both my mistakes in this thread.

      Aaron B.
      Available for small or large Perl jobs and *nix system administration; see my home node.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1127349]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (2)
As of 2024-04-26 06:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found