访问()中的perl标量变量

Vic*_*cky 0 perl

$a=10 
print "$a";
print "${a}";
print "$(a)";
Run Code Online (Sandbox Code Playgroud)

print "$a";并且 print "${a}"; 工作方式完全相同,看起来perl中的两种语法都支持打印标量变量,但 print "$(a)";打印出奇怪的值,想要低估当发生什么时发生的事情 print "$(a)";

mob*_*mob 5

$(是Perl中的有效标量.它包含当前用户所属的以空格分隔的组ID列表.

所以print "$(a)"相当于print $( . "a)"你可以期待输出

perl -e 'print "$(a)"'
100 100 14677a)
Run Code Online (Sandbox Code Playgroud)

  • `$ {varname}`最常见的用例是插值时没有分离.示例:`"$ {bytes_total} B available"`(功能上与`$ {bytes_total}相同.'B available'`)不能写为"$ bytes_totalB available"`因为Perl会查找变量` $ bytes_totalB`. (3认同)
  • `$ {...}`是必要的,因为有时需要将sigil应用于复杂的表达式(`$ {$ foo - > {bar} [42]}`).更简单的`$ var`语法是必要的,因为如果Perl程序员每次想要引用一个变量时都必须输入额外的括号,Perl就永远不会流行(你必须继续输入`$`就够了). (2认同)
  • 另外,`$ {...}`不仅可以用作变量名称作为`...`,还可以用于返回标量引用的表达式,然后用`$ {}`取消引用.真的,阅读上面引用的"perldata"页面是个好主意:-) (2认同)