这个问题在这里已经有了答案:
What's the difference between my ($variableName) and my $variableName in Perl?
(4 个回答)
4年前关闭。
有人可以向我解释为什么这是差异:
my $num = '>33*1311875297587*eval*0*frame[0]*"A"<' =~ /(\d{3,})/;
> $num = 1
my ($num) = '>33*1311875297587*eval*0*frame[0]*"A"<' =~ /(\d{3,})/;
> $num = 1311875297587
我非常想知道有什么恶作剧在等着我。
谢谢
最佳答案
在 Perl 中,括号通常只是改变优先级。 (例如 3+4*5
与 (3+4)*5
)
异常(exception)情况是在赋值运算符的左侧 (LHS) 找到括号。在这种情况下,它会影响将使用 Perl 的两个赋值运算符中的哪一个。
如果分配的 LHS 是某种聚合,则使用列表分配。否则,使用标量赋值。以下被认为是聚合:
(...)
(括号中的任何表达式)@array
和 @array[...]
%hash
和 @hash{...}
my (...)
, our (...)
和 local (...)
(state (...)
引发错误。)见 Mini-Tutorial: Scalar vs List Assignment Operator对于两个运营商之间的差异。
在您的情况下,相关差异是评估作业右侧(RHS)的上下文。
1
,如果匹配成功并且模式不包含捕获)。 关于regex - Perl:($num) 和 $num 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48431904/