鉴于此计划:
use strict;
use warnings;
my $zx_size = 32;
my $x = "$zx_size'h0";
Run Code Online (Sandbox Code Playgroud)
Perl告诉我这个:
Name "zx_size::h0" used only once: possible typo at concat.pl line 7.
Use of uninitialized value $zx_size::h0 in string at concat.pl line 7.
Run Code Online (Sandbox Code Playgroud)
为什么?
看来有多种方法可以指定var的命名空间.还有其他人吗?
是否可以关闭此行为?
Hun*_*len 19
旧的包分隔符是单引号',最初用于简化Ada程序员向Perl的过渡.它被替换::为更易读并且易于转换C++程序员.
它仍然支持向后兼容性,但您可以将标量包装起来{..}以使其正确插值.
my $x = "${zx_size}'h0";
Run Code Online (Sandbox Code Playgroud)
要么
my $x = "$zx_size\'h0";
Run Code Online (Sandbox Code Playgroud)
Okt*_*ist 11
'早期的Perls使用单引号字符来表示包范围::,并且仍然支持向后兼容性.
要做你想做的事,你需要使用${}语法告诉Perl标识符结束的位置和文字开头:
"${zx_size}'h0"
Run Code Online (Sandbox Code Playgroud)
请注意,如果您想要$zx_size在标识符中出现合法的任何其他文字字符后面的值,则必须执行此操作:
"${zx_size}foo"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |