如何将列值作为智能匹配的数字范围

时间:2018-10-05 08:32:23

标签: perl smartmatch

我的txt文件的列值看起来像

85806534..85893402
49011742..49029143
114352846..114428174

我想进行智能匹配。我将这些值放入@array [0]

if ($line ~~$array[0]){do something here}

如何使$ array [0]成为数字范围?

如果我被..分割,则将值放入数组[0]和数组[1]

if ($line ~~[$array[0]..$array[1]){....}

此perl代码对我有用。

1 个答案:

答案 0 :(得分:4)

$line ~~ [ do { my ($min, $max) = split(/\.\./, $array[0]); $min..$max } ]

这里的低效率是疯狂的。您为什么要创建包含成千上万个元素的数组以进行智能匹配?这些年来,即使smartmatch仍然没有被标记为处于实验状态,您也应该使用以下代码:

my ($min, $max) = split(/\.\./, $array[0]);
$line >= $min && $line <= $max