Perl中的$ dxyabc和$ {dxyabc}有什么区别?

use*_*186 4 perl

Perl 中字符串$dxyabc和字符串的定义有什么区别${dxyabc}

Lee*_*hem 9

那么,这取决于具体情况.例如,

$foo = "$dxyabcdef";
$bar = "${dxyabc}def";
Run Code Online (Sandbox Code Playgroud)

$foo将具有值$dxyabcdef而不是$dxyabc附加def,这是值$bar.

否则,据我所知,它们是一样的.


Zai*_*aid 8

perldoc perldata 解释为什么在标量变量的上下文中使用curlies:

与在某些shell中一样,您可以将变量名称括在大括号中,以便将其与下面的字母数字(和下划线)消除歧义.在将变量插入字符串以将变量名称与后面的双冒号或撇号分隔时,您还必须执行此操作,因为这些将被视为包分隔符:

$who = "Larry";
print PASSWD "${who}::0:0:Superuser:/:/bin/perl\n";
print "We use ${who}speak when ${who}'s here.\n";
Run Code Online (Sandbox Code Playgroud)

没有大括号,Perl会寻找a $whospeak,a $who::0$who's变量.最后两个是(推测)不存在的包中$0$s变量和变量who.


正如其他人所提到的,$dxyabc和之间没有区别${dxyabc}.引用的文档解释了为什么"$dxyabc_"和之间存在差异"${dxyabc}_"