任何人都可以解释为以下两种语法之间的区别:
($x) = $a =~ /(\d+)/;
$y = $a =~ /(\d+)/;
Run Code Online (Sandbox Code Playgroud)
在示例中,if $a= 100lkjthen
$x = 100but $y = 1.
使用此代码,我试图提取$a字符串中的数值.
我不明白为什么?
小智 6
在括号内写入变量时,会强制列出上下文.这意味着,您要分配给该变量的内容也将被解释为列表.
在您的情况下,您有一个正常的匹配.匹配的返回值是一个列表,包含所有匹配项.如果将列表强制转换为标量上下文,则返回此列表中的条目数.所以你有1个匹配,这意味着这个列表包含1个匹配.
不建议使用正则表达式的返回值.
您可以使用变量$1, $2, $3,...进行匹配(括号中的匹配).
在你的情况下:
$a =~ /(\d+)/;
$x = $1;
Run Code Online (Sandbox Code Playgroud)
BTW:$a并且$b是特殊的变量sort.请不要使用它们:).
($x) = $a =~ /(\d+)/;
# $x is the first element of the RegEx return value
# ($x, $y, $z) = $a =~ /(\d)(\d)(\d)/;
# $x = first match, $y = second and so on.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |