#!/usr/bin/perl -w use strict; rename 'tempfile.txt', 'tempfile.txt~'; # save a backup open TEMPFILE, ") { my @elements = split(/\s+/g, $line); # split the line on all whitespace push @elements, $newcolumn[$incr++]; # add a new column push @data, \@elements; # need to store as ref } close TEMPFILE; @data = sort { $$a[2] cmp $$b[2] || $$b[1] <=> $$a[1] } @data # or die "can't sort"; $, = " " ; # separate output fields by a space open OUTFILE, ">tempfile.txt" or die $!; foreach my $item (@data){ print OUTFILE "@$item\n"; } close OUTFILE; __END__