use strict; use warnings; my @rows; push @rows, [split ' '] while ; print "@$_\n" for sort {$a->[1] cmp $b->[1] or $a->[2] cmp $b->[2]} @rows; __DATA__ name=Document1.doc type=Word author=aAuthor name=Document1.doc type=Excel author=bAuthor name=Document1.doc type=Text author=cAuthor name=Document1.doc type=Excel author=dAuthor name=Document1.doc type=Word author=eAuthor #### name=Document1.doc type=Excel author=bAuthor name=Document1.doc type=Excel author=dAuthor name=Document1.doc type=Text author=cAuthor name=Document1.doc type=Word author=aAuthor name=Document1.doc type=Word author=eAuthor