ont*_*cks 1 string quotes perl
所以我有两个变量
$x = q(foo);
$y = q(bar);
Run Code Online (Sandbox Code Playgroud)
我的目标是在第三个变量中使用它们,它们之间有下划线即foo_bar.有很多方法可以做到这一点,但我想使用qq
所以
$z = qq($x_$y);
Run Code Online (Sandbox Code Playgroud)
这会产生以下错误
Global symbol "$x_" requires explicit package name at test.pl line 45.
Execution of C:\test.pl aborted due to compilation errors.
Run Code Online (Sandbox Code Playgroud)
所以我不得不使用大括号和变量x来使它工作
$z = qq(${x}_$y);
Run Code Online (Sandbox Code Playgroud)
为什么下划线不起作用qq?在这种情况下,为什么我需要大括号?
这是因为_计算标识符中的字母(例如变量名称).
当你写作时"$x_$y",Perl认为你正试图插入两个变量,$x_并且$y.同样,当你写"$foo$bar",Perl的认为你想插$foo和$bar(没有$f . 'oo' . $bar或$fo . 'o' . $bar或任何其他组合).
一般规则是:名称尽可能向右扩展(即,Perl为标识符选择最长的解释).