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

How to make a column value as an number range for 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 代码对我有用。

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

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

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