The use of a Schwartzian Transform gives you indeed more flexibility : you can perform the sort on any field, handle cases were sort is not trivial, sort on many fields etc. It is certainly an idiom you won't regret to have learnt.
A common way to read a whole file to a scalar, is to "slurp" it by getting rid of the input record separator's ($/) value (newline by default).
I rewrote it with clean file opening, slurp and sort on the first and fourth field, in order to help you get the logic, in case you did not already.
#!/usr/bin/env perl use strict; use warnings; open my $fh, '<', 'file.txt' or die "$!\n"; my $raw = do { local $/; <DATA>}; my $sorted = join "\n", map { $_->[0] } sort { $a->[1] <=> $b->[1] } sort { $a->[2] <=> $b->[2] } map { [$_, (split /:/)[0,4]] } split( /\n/, $raw); print $sorted;
In reply to Re: a little problem with sorting my data
by i-blis
in thread a little problem with sorting my data
by aash08
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |