@lines = ( "0|aa aa|1998|aaa a|a aaa|10|aa a aa", "1|bbb aa|1992|fa a|gaa|5|gfsa aa", "2|aa ba|1997|afa|hhaa|1|asdf aa", "3|cccaa|1997|ssa s|hhava|3|gfdh gaa", "4|adaa|1994|g a a|jiua|6|angf a" ); @lines = sort {lc(($b =~ /(\|[\w\s]+){2}/)[0]) <=> lc(($a =~ /(\|[\w\s]+){2}/)[0]) } @lines; foreach $line (@lines){print "$line\n";}