我正在寻找一种优雅的方式来表示在格式化数字通常呈现的情况下未定义的值。我会做一个小例子。首先,你当然不能使用这个:
#!/usr/bin/perl
use strict;
use warnings;
for my $s (1, 1.2, undef, 1.3) {
printf "%5.2f\n", $s;
}
...因为“使用警告”在第三次迭代中用“使用未初始化的值...”来提醒您。所以下一步是这样的:
#!/usr/bin/perl
use strict;
use warnings;
for my $s (1, 1.2, undef, 1.3) {
printf "%5.2f\n", $s//0;
}
而且,男孩,顺便说一下,我喜欢新的 5.10 '//' 运算符吗?但这也不是我想要的,因为 $s 的值不是零,它是未定义的。我真正想要的是这样的:
#!/usr/bin/perl
use strict;
use warnings;
for my $s (1, 1.2, undef, 1.3) {
printf "%5.2f\n", $s//q();
}
...但我不能,因为这会在第三个值上生成“参数”不是数字...”问题。
这把我带到了我的问题的门口。我当然可以编写代码来检查我发出的每个数字的定义性,并创建一个完全不同的非基于 %f 的 printf 格式字符串,但是,好吧,......哎呀。
有没有人定义了一种很好的方法来处理这种类型的需求?
最佳答案
它不漂亮,但我只是这样做
defined($s) ? printf "%f.2f\n", $s : print "undef\n";
关于perl - 如何在 Perl 中从 printf 呈现未定义的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/547042/