我想在Perl中合并连续的数字范围。Number::Range
没有做我所期望的:
use Data::Dumper;
use Number::Range;
say STDERR Dumper(Number::Range->new("1000..5555,5559..9999,5556..5557,5558")->rangeList);
字符串
结果:
$VAR1 = [
5556,
5558
];
$VAR2 = [
5559,
9999
];
$VAR3 = [
1000,
5555
];
型
我期望:
$VAR1 = [
1000,
9999
];
型
3条答案
按热度按时间voj3qocg1#
显然,模块在内部以这种方式表示数据。它似乎没有像您希望的那样创建一组合并的数组。
如果在标量上下文中使用
range
方法,您将看到一个合并的范围字符串:字符串
印刷品:
型
pjngdqdw2#
模块的方法range在列表上下文中以列表的形式返回范围
字符串
每行打印一个数字,排序。返回标量上下文中的字符串,也是已排序的。
或者,你可以用一个列表/数组构造一个对象(未记录)
型
按排序返回。
00jrzges3#
使用替代模块
Set::IntSpan
:字符串