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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将列值作为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?即使smartmatch在被打破这些年之后仍然没有被标记为实验性的,你应该使用以下代码:

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

以上是关于如何将列值作为smartmatch的数字范围的主要内容,如果未能解决你的问题,请参考以下文章

spark将列值作为sql查询执行

将列值分配给数据框中的变量

Oracle Query - 将列值作为多个值的列标题

如何将列值分隔为列名?

如何将列值一一传递给 SQL 函数?

如何将列值转换为vba宏中的行