У меня была такая же проблема при работе с выводом Bit :: Vector :: to_Enum. Я решил это, выполнив:
$range_string =~ s/\b(\d+)-(\d+)\b/expand_range($1,$2)/eg;
тогда тоже в моем файле:
sub expand_range
{
return join(",",($_[0] .. $_[1]));
}
Таким образом, «1,3,5-7,9,12-15» превращается в «1,3,5,6,7,9,12,13,14,15».
Я очень старался поместить это расширение во 2-ю часть s ///, поэтому мне не понадобилась бы эта дополнительная функция, но я не мог заставить ее работать. Мне это нравится, потому что хотя Number :: Range будет работать, таким образом, мне не нужно тянуть другой модуль для чего-то, что должно быть тривиальным.