#! perl -slw use strict; my @array = split '\n', <<'EOA'; Item1 - 2 foo, 2 bar Item2 - 0 foo, 1 bar Item3 - 1 foo, 3 bar Item4 - 1 foo, 2 bar EOA my @sorted = map{ substr $_, 5; } sort map{ sprintf '%05d%s', $_ =~ m[,\s+(\d+)], $_; } @array; print for @sorted; __END__ Item2 - 0 foo, 1 bar Item1 - 2 foo, 2 bar Item4 - 1 foo, 2 bar Item3 - 1 foo, 3 bar