【发布时间】:2026-01-30 15:10:01
【问题描述】:
字符串$dxyabc和字符串${dxyabc}在Perl中的定义有什么区别?
【问题讨论】:
标签: perl
字符串$dxyabc和字符串${dxyabc}在Perl中的定义有什么区别?
【问题讨论】:
标签: perl
嗯,这取决于上下文。例如,
$foo = "$dxyabcdef";
$bar = "${dxyabc}def";
$foo 将具有$dxyabcdef 的值,而不是附加$dxyabc 的def,这是$bar 的值。
否则,据我所知,它们是相同的。
【讨论】:
perldoc perldata 解释了为什么在标量变量的上下文中使用花括号:
在某些 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}_" 之间存在差异
【讨论】:
无,大括号是变量名的分隔符。
【讨论】: