Здравствуйте, Есть ли в Perl готовые решения для реализации преобразования 1-3,7,9 = 1,2,3,7,9 1-3,5,12-14 = 1,2,3,5,12,13,14 Если есть, заранее танкс за примерчик.
Тот же алгоритм, что у friday но IMHO более в perl стиле:
#!/usr/bin/perl -w
use strict;
my $in = '1-3,5,100-110, 115, 12-14';
my @out;
@out = map { /(\d+)-(\d+)/ ? $1..$2 : $_}
split ',', $in;
Вот вариант еще покороче (и заодно игнорирующий пробелы):
#!/usr/bin/perl -w
use strict;
my $in = '1-3, 5, 100 - 110, 115 , 12-14 ';
$in =~ s/-/../g;
my @out = eval "($in)";
$@ and die "eval ($in): $@\n"; # проверочка не помешает ;-)