如何使用"my"关键字在perl中区分结果?

Rag*_*h V 1 scripting perl pattern-matching string-matching output

我不明白"my"关键字如何在这里工作.这是我的perl脚本.

$line = ' sdfaad(asdvfr)';
Run Code Online (Sandbox Code Playgroud)

代码1:

if ($tmp = $line =~ /(\(\s*[^)]+\))/ ) {
    print $tmp;
}
Run Code Online (Sandbox Code Playgroud)

输出:

1
Run Code Online (Sandbox Code Playgroud)

码2:

if (my ($tmp) = $line =~ /(\(\s*[^)]+\))/ ) {
    print $tmp;
}
Run Code Online (Sandbox Code Playgroud)

输出:

(asdvfr)
Run Code Online (Sandbox Code Playgroud)

为什么两个输出不同?是否与使用有关my

Сух*_*й27 5

这不是my有区别的,而是标量/列表上下文.周围$tmp的大括号强加列表上下文,

if (($tmp) = $line=~ /(\(\s*[^)]+\))/ ) # braces makes difference, not 'my'
Run Code Online (Sandbox Code Playgroud)

虽然my只将变量声明为词法范围的变量.