my @data = map { [$_, split(/\./, (split /\s+/, $_)[1])]} @all_rows; #print Dumper @data; my @sorted = map{$_->[0]} sort {$a->[1] cmp $b->[1]} map { [$_, inet_aton($_->[1]) ]} @data; print Dumper @sorted; } Results $VAR1 = [ [ '2008-07-26', '13.168.1.1' ] ]; $VAR2 = [ $VAR1->[0] ]; $VAR1 = [ [ '2008-07-26', '10.169.1.1' ] ];