#sort -t "," -k 4,6 File.txt sub custom { my ($a4,$a6) = (split(',',$a))[4,6]; my ($b4,$b6) = (split(',',$b))[4,6]; return ($a4 == $b4)?$a4 <=> $b4:$a6 <=> $b6 } # open(my $fh, File.txt) or die "Unable to open File.txt: $!"; # DATA used for convenience my @result = sort custom ; print @result,"\n"; __DATA__ 11,22,33,44,55,66,77,88,99 9,1,2,3,4,5,6,7 2,3,4,5,6,7,8,9 1,2,3,4,5,6,7,8 0,0,0,0,0,0,0,0 1,2,3,5,5,6,7,8 1,2,3,4,5,7,7,8 #### 0,0,0,0,0,0,0,0 9,1,2,3,4,5,6,7 1,2,3,4,5,6,7,8 1,2,3,5,5,6,7,8 1,2,3,4,5,7,7,8 2,3,4,5,6,7,8,9 11,22,33,44,55,66,77,88,99