Perl 如何将列值设置为smartmatch的数字范围

Perl 如何将列值设置为smartmatch的数字范围,perl,smartmatch,Perl,Smartmatch,我有一个txt文件,列值如下 85806534..85893402 49011742..49029143 114352846..114428174 我想做smartmatch。我将这些值放入@array[0] if ($line ~~$array[0]){do something here} 如何将$array[0]设置为数字范围 如果我分开。。然后将值放入数组[0]和数组[1] if ($line ~~[$array[0]..$array[1]){....} 这段perl代码适合我 $li

我有一个txt文件,列值如下

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

我想做smartmatch。我将这些值放入@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 } ]
这里的低效率是疯狂的。为什么要创建包含10个数千个元素的阵列以进行smartmatch?即使smartmatch在被破坏多年后仍没有被标记为实验性的,您也应该使用以下选项:

my ($min, $max) = split(/\.\./, $array[0]);
$line >= $min && $line <= $max
my($min,$max)=拆分(/\.\./,$array[0]);
$line>=$min&&$line
这里的低效率是疯狂的。为什么要创建包含10个数千个元素的阵列以进行smartmatch?即使smartmatch在被破坏多年后仍没有被标记为实验性的,您也应该使用以下选项:

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

$line>=$min&&$line你所做的就是我所做的。您可以将智能匹配封装在一个字符串eval中,如
if(eval“\$line~~~$array[0]”
,但您必须确保您的数据没有任何意外。我还怀疑以这种方式使用eval会很慢。smartmatch已被弃用。当您可以只使用
$array[0]时,为什么要使用smartmatch(已弃用),而smartmaching应该被避免(未发布,可能会更改或删除),而不是弃用(打算删除)您正在做的事情是我应该做的。您可以将智能匹配封装在一个字符串eval中,如
if(eval“\$line~~~$array[0]”
,但您必须确保您的数据没有任何意外。我还怀疑以这种方式使用eval会很慢。smartmatch已被弃用。当您可以只使用
$array[0]时,为什么要使用smartmatch(已弃用),而smartmaching应该避免(未发布,可能会更改或删除),而不是弃用(打算删除)