将 0 转换为字符串

convert 0 into string

我正在用 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,以及更多解决方案。

我只想进行显式转换而不是隐式转换。

感谢您的帮助。

如果你认为你有零,但程序认为你有一个空字符串,你可能正在处理一个 dualvar。 dualvar 是包含字符串和数字的标量。 Perl 通常 return 在需要 return false 时使用 dualvar。

例如,

$ 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 编辑的值 return 在用作数字时充当零,在用作字符串时充当空字符串。

要将此 dualvar 转换为数字(其他数字不变),您可以使用以下方法:

$x ||= 0;