如何将列值作为smartmatch的数字范围

问题描述 投票:0回答:1

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

perl smartmatch
1个回答
4
投票
$line ~~ [ do { my ($min, $max) = split(/\.\./, $array[0]); $min..$max } ]

这里的低效率是疯狂的。为什么要创建具有成千上万个元素的数组仅用于smartmatch?即使smartmatch在被打破这些年之后仍然没有被标记为实验性的,你应该使用以下代码:

my ($min, $max) = split(/\.\./, $array[0]);
$line >= $min && $line <= $max
© www.soinside.com 2019 - 2024. All rights reserved.