use warnings; use strict; print map { $_->[0] } sort { $b->[1] <=> $a->[1] } map { [ $_, ( split /[,\s\D]+/, $_ )[2] ] } ; __DATA__ field15,field78,filed0 field90,field12,filed23 field3,field55,filed67