smartmatch 运算符未按预期工作

Ωme*_*ega 3 arrays perl list smartmatch

为什么 smartmatch 运营商~~说这0不在(0, 5..100)?

print ((0 ~~ (0, 5..100)) ? "Y" : "N");
Run Code Online (Sandbox Code Playgroud)

N

在这里测试一下。

mob*_*mob 5

使右侧成为数组引用

print ((0 ~~ [0, 5..100]) ? "Y" : "N");
Run Code Online (Sandbox Code Playgroud)

或命名数组

@a = (0, 5..100);
print ((0 ~~ @a) ? "Y" : "N");
Run Code Online (Sandbox Code Playgroud)

或者……不管这叫什么(匿名命名数组?)

print ((0 ~~ @{[0,5..100]}) ? "Y" : "N");
Run Code Online (Sandbox Code Playgroud)

(0,5..100) 是一个列表但它不是一个数组,这是区分很重要的地方之一。