0

我的 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 代码对我有用。

4

1 回答 1

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

这里的低效率是疯狂的。为什么要创建包含成千上万个元素的数组来进行智能匹配?即使 smartmatch 在这些年来被破坏后仍未被标记为实验性,您应该使用以下内容:

my ($min, $max) = split(/\.\./, $array[0]);
$line >= $min && $line <= $max
于 2018-10-05T10:19:55.140 回答