#!/usr/bin/perl -w use strict; my @original = <>; # or whatever. my @lines = map { $_->[0] } sort { $a->[1] <=> $b->[1] or $a->[2] <=> $b->[2] } map { [ $_, unpack('x12a9xa12', $_) ] } @original;