将0转换为字符串

时间:2017-04-28 14:31:08

标签: string perl zero

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

我希望明确转换而不是隐含转换。

感谢您的帮助。

1 个答案:

答案 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;