フォーマットされた数値が通常レンダリングされる状況で未定義の値を示すためのエレガントな方法を探しています。小さな例を作成します。手始めに、もちろんこれを使用することはできません:
#!/usr/bin/perl
use strict;
use warnings;
for my $s (1, 1.2, undef, 1.3) {
printf "%5.2f\n", $s;
}
...3回目の反復で「警告の使用」が「初期化されていない値の使用...」に釘付けになるためです。したがって、次のステップは次のようなものです。
#!/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();
}
...しかし、これにより、3番目の値で「引数 ""は数値ではありません...」という問題が発生するため、できません。
これは私の質問の玄関口に私をもたらします。もちろん、私が発行するすべての数値の定義性をチェックし、まったく異なる非%fベースのprintf形式の文字列を作成するコードを書くことはできますが、まあ、...うん。
誰かがこのタイプの要件に対処するための良い方法を定義しましたか?