Perl中字符串$dxyabc
和字符串${dxyabc}
的定义有什么区别?
答案 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)
无,大括号是变量名称周围的分隔符。