#!/usr/bin/perl
use strict;
my @strings = qw/
string1
string2
another_string1
another_string2
/;
my %h;
foreach my $string (@strings) {
if ($string =~ /(\d+)/) {
push @{$h{$1}}, $string;
} else {
print "cannot classify $string : skipping\n";
}
}
foreach my $key (sort { $a <=> $b } keys %h) {
foreach my $s (@{$h{$key}}) {
print $s . "\n";
}
}
Более многословно, чем Решение YSTH , но я надеюсь, что это поможет.По сути: я использую хеш %h
, где ключи - это числа (совпадают с конца ваших строк), а значения - это массивы, содержащие строки, оканчивающиеся этим числом.После создания хэша я распечатываю его содержимое, сортируя ключи (то есть числа в конце ваших строк).