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

时间:2014-04-23 15:04:27

标签: perl

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

3 个答案:

答案 0 :(得分:9)

嗯,这取决于具体情况。例如,

$foo = "$dxyabcdef";
$bar = "${dxyabc}def";

$foo的值为$dxyabcdef,而不是$dxyabc附加def,这是$bar的值。

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

答案 1 :(得分: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";
     

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


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

之间存在差异

答案 2 :(得分:1)

无,大括号是变量名称周围的分隔符。