in reply to Re: Need Help! Two Dimentional Array Sorting
in thread Need Help! Two Dimentional Array Sorting

I wouldn't even bother using Perl for this.

In the *nix world...

Agreed, but it's not like using perl for this is so bad (esp. for the poor M$ users who don't know/have the unix tools):

perl -e "print sort <>" file.txt
But -- curious discovery -- depending on the file content, this can produce somewhat different output from the unix "sort file.txt": unix sort puts empty lines first, whereas perl's sort puts them between the lines that start with tab and the ones that start with space or other characters ("\x0a" and "\x0d\x0a" come after "\x09" and before "\x20"). That is, in its simplest form, the perl version takes line termination characters into account for sorting, but unix sort does not. Doing a proper emulation of unix sort with perl takes a bit more work. So far, this is the "best" I can do (it does work -- it's just a tad ugly):
perl -e "print sort {chomp($x=$a); chomp($y=$b); $x cmp $y} <>" file.t +xt
(I'm not sure, but I think it would work using double-quotes in the standard M$ shell, whereas a unix shell (e.g. bash for windows) needs single quotes.)

Replies are listed 'Best First'.
Re^3: Need Help! Two Dimentional Array Sorting
by johngg (Canon) on Jan 03, 2008 at 11:29 UTC
    perl -e "print sort {chomp($x=$a); chomp($y=$b); $x cmp $y} <>" file.txt

    The following is also a bit challenged in the beauty stakes but avoids the repetitive chomp'ing of the lines. Tested under both M$ shell (with double quotes) and Solaris ksh (with single-quotes).

    perl -e "print map{qq{$_$/}} sort map{chomp; $_} <>;" file.txt

    I hope this is of interest.

    Cheers,

    JohnGG