2
slu@new-host:~ 19:59:33
❯ perl -e "print (2 ~~ (1, 2, 3))"
slu@new-host:~ 19:59:39
❯ perl -e "my @a = (1, 2, 3); print (2 ~~ @a)"
1

诚然,第二种形式并不比第一种简洁得多,但我很想知道为什么第一种会失败。

4

2 回答 2

4

1,2,3是列表文字或列表运算符,而不是数组文字。标量上下文中的列表运算符返回其最后一个操作数的计算结果,因此

print (2 ~~ (1, 2, 3))

方法

print(2 ~~ 3)  # Plus two void context warnings

鉴于

print (2 ~~ @a)

是语法糖

print(2 ~~ \@a)

你可以使用

print(2 ~~ do { my @a = (1,2,3); \@a })

或接近等效但更短的

print(2 ~~ [1,2,3])
于 2013-04-15T00:46:33.340 回答
0

看起来这行得通

slu@new-host:~ 20:00:31
❯ perl -e "print (2 ~~ [1, 2, 3])"
1
于 2013-04-15T00:02:54.823 回答