use warnings; use strict;
open my $INF, "<", "look.txt" or die "cannot open";
my @look = <$INF>;
close($INF);
my @out = sort { (split /\|/, $a)[4] <=> (split /\|/, $b)[5] } @look;
for my $line (@out) {
my @fields = split /\|/, $line;
print join(",", @fields[0 .. 4]), "\n";
}
__END__
####
use warnings; use strict;
open my $INF, "<", "look.txt" or die "cannot open";
my @look = <$INF>;
close($INF);
my @key = map { (split /\|/)[4] } @look;
my @out = @look[sort { $key[$a] <=> $key[$b] } 0 .. @look - 1];
for my $line (@out) {
my @fields = split /\|/, $line;
print join(",", @fields[0 .. 4]), "\n";
}
__END__
####
#!ruby -w
look = File.open("look.txt").readlines; # here I'm inclined to write 'map' instead of 'readlines'
out = look.sort_by {|line| line.split("|")[4] };
out.each {|line|
fields = line.split "|";
puts fields[0 .. 4].join(",");
}
__END__