如何在Perl中从printf渲染未定义的值?
发布时间:2020-12-15 23:21:27 所属栏目:大数据 来源:网络整理
导读:我正在寻找一种优雅的方式来表示格式化数字通常呈现的情况下的未定义值.我会举一个小例子.对于初学者,你当然不能使用这个: #!/usr/bin/perluse strict;use warnings;for my $s (1,1.2,undef,1.3) { printf "%5.2fn",$s;} …因为“使用警告”会在第三次迭代
我正在寻找一种优雅的方式来表示格式化数字通常呈现的情况下的未定义值.我会举一个小例子.对于初学者,你当然不能使用这个:
#!/usr/bin/perl use strict; use warnings; for my $s (1,1.2,undef,1.3) { printf "%5.2fn",$s; } …因为“使用警告”会在第三次迭代中指出“使用未初始化的值…”.所以下一步是这样的: #!/usr/bin/perl use strict; use warnings; for my $s (1,$s//0; } 而且,男孩,顺便说一下,我喜欢新的5.10’//’运算符吗?但这也不是我想要的,因为$s的值不是零,它是未定义的.我真正想要的是这样的: #!/usr/bin/perl use strict; use warnings; for my $s (1,$s//q(); } …但我不能因为这会在第三个值上生成“参数”“不是数字……”问题. 这让我走到了我的问题的门口.我当然可以编写代码来检查我为定义的内容发出的每个数字,并创建一个完全不同的非基于%f的printf格式字符串,但是,好吧,…哎呀. 有没有人定义了一种很好的方法来处理这种类型的要求? 解决方法
我不认为有任何关于它的东西 – 这正是你想要做的.
use strict; use warnings; my($raw) = [1,1.3]; my($formatted) = [map((defined $_ ? sprintf('%5.2f',$_) : "(undef)"),@$raw)]; print '$formatted: <',join('> <',@{$formatted}),qq(>n); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |