produces:my @lines = split /\n/, <<EOD; D1001 SNAM1 1 101 XYZ1234 21.11 D1001 SNAM1 1 102 XYZ2234 22.12 D1002 SNAM2 1 201 PQR2234 12.12 D1002 SNAM2 2 202 PQR2234 32.12 D1002 SNAM2 3 203 PQR2234 52.12 D1002 SNAM2 4 204 PQR2234 37.12 D1001 SNAM1 2 103 XYZ1234 22.12 D1003 SNAM3 1 301 ABC1234 22.12 D1002 SNAM2 5 205 PQR2234 37.12 D1001 SNAM1 4 104 XYZ1234 22.12 EOD @lines = map { $_->[0] } # extract lines back out sort { # sort on split columns $a->[1][0] cmp $b->[1][0] # index 0 is 'col1' || $a->[1][1] cmp $b->[1][1] # col2 || $a->[1][4] cmp $b->[1][4] # col5 } map { [ $_ => [ split /\s+/, $_ ] ] } # [ 'line1' => ['col1', +...] ] @lines; print "$_\n" foreach @lines;
D1001 SNAM1 1 101 XYZ1234 21.11 D1001 SNAM1 2 103 XYZ1234 22.12 D1001 SNAM1 4 104 XYZ1234 22.12 D1001 SNAM1 1 102 XYZ2234 22.12 D1002 SNAM2 1 201 PQR2234 12.12 D1002 SNAM2 2 202 PQR2234 32.12 D1002 SNAM2 3 203 PQR2234 52.12 D1002 SNAM2 4 204 PQR2234 37.12 D1002 SNAM2 5 205 PQR2234 37.12 D1003 SNAM3 1 301 ABC1234 22.12
In reply to Re: Sample Sort Code
by mreece
in thread Sample Sort Code
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |