I don't see much room for simplification. The map block could be replaced by a slightly simpler expression:
map [ m|/dir-(\d+)-(\d+)$|, $_], @ARGV
Note the anchor to then end of string in the regex. It makes sure that earlier combinations of digits and "-" in the path don't mess up the capture.
Also, xargs isn't the right tool to use here. It splits the arguments into portions if there are too many, but you need to sort the entire list in any case.
So my suggestion would be
perl -le'print( (sort {$b->[0] <=> $a->[0] || $b->[1] <=> $a->[1] } ma
+p [ m|/dir-(\d+)-(\d+)$|, $_], @ARGV)[1]->[2])' ./dir-*
Anno