我正在使用perl中的脚本。
此脚本读取数据库并为其他设备生成配置文件。
我对" 0"。
有疑问从我的数据库中,我得到一个0(int),我希望这个0成为" 0"在配置文件中。当我得到任何其他值(1,2,3等)时,脚本会生成(" 1"," 2"," 3"等)。但是0变为空字符串""。
我知道,对于perl:
- undef
- 0
- ""
- " 0"
是假的。
如何将0转换为" 0" ?我尝试qw,qq,sprintf,$ x = $ x || 0,以及更多的解决方案。
我希望明确转换而不是隐含转换。
感谢您的帮助。
答案 0 :(得分:2)
如果你认为你有零,但程序认为你有一个空字符串,你可能正在处理双变量。双变量是一个包含字符串和数字的标量。当需要返回false时,Perl通常会返回一个doublevar。
例如,
$ perl -we'my $x = 0; my $y = $x + 1; CORE::say "x=$x"'
x=0
$ perl -we'my $x = ""; my $y = $x + 1; CORE::say "x=$x"'
Argument "" isn't numeric in addition (+) at -e line 1.
x=
$ perl -we'my $x = !1; my $y = $x + 1; CORE::say "x=$x"'
x=
正如您所看到的,!1
返回的值在用作数字时充当零,并在用作字符串时充当空字符串。
要将此双变量转换为数字(保持其他数字不变),您可以使用以下内容:
$x ||= 0;