#! usr/bin/perl -w use strict; use warnings; my @original_array = ; foreach (@original_array){ print "$_"; } my @sorted_array = map{ substr($_,68); #unpack('x68 A*', $_) #achieves same thing but apparently less efficient... } sort map { my ($perm, $path, $filename) = split /\s+/, $_; pack 'N A32 A32 A*', $perm, $path, $filename, $_; } (@original_array); print "\n\n"; foreach (@sorted_array){ print "$_"; } __DATA__ 2755 home 444 home/backup appletest.txt 444 home/backup dhl.txt 444 home/support appletest.bat 2755 bin 755 bin/backup env.txt 755 bin/support arc.bat 755 bin/backup aus.txt 2755 etc 644 etc/backup appletest.txt 644 etc/support arc.bat 644 etc/support dhl.bat 644 etc/support env.bat