print for @a;; xxxxxx.2013-2.yyyyy xxxxxx.2013-11.yyyyy xxxxxx.2013-10.yyyyy xxxxxx.2012-52.yyyyy xxxxxx.2013-3.yyyyy xxxxxx.2012-51.yyyyy xxxxxx.2012-50.yyyyy xxxxxx.2013-1.yyyyy xxxxxx.2013-4.yyyyy @b = map{ unpack 'x[NN]a*', $_ } sort map{ m[(\d{4})-(\d+)]; pack 'NNa*', $1, $2, $_ } @a;; print for @b;; xxxxxx.2012-50.yyyyy xxxxxx.2012-51.yyyyy xxxxxx.2012-52.yyyyy xxxxxx.2013-1.yyyyy xxxxxx.2013-2.yyyyy xxxxxx.2013-3.yyyyy xxxxxx.2013-4.yyyyy xxxxxx.2013-10.yyyyy xxxxxx.2013-11.yyyyy