in reply to Rule-based sorting

sub ST(&@){ my $metric=shift; map {$_->[0]} sort {$a->[1] cmp $b->[1]} map {[$_,&{$metric}]} @_ } print ST{ if( /(.*)(\d\d)(.*)_(\Q$string1\E|(\Q$string2\E))$/ ){ (0+defined($5)) . (200-$2) . $1 . $3 }else{ "2$_" } } <>;