Я ищу элегантный способ обозначения неопределенных значений в ситуациях, когда обычно отображаются форматированные числа. Я приведу небольшой пример. Для начала вы, конечно, не можете использовать это:
#!/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();
}
... но я не могу, потому что это создает проблему "Аргумент" не является числовым..." для третьего значения.
Это подводит меня к порогу моего вопроса. Я, конечно, могу написать код, который проверяет каждое число, которое я выдаю, на определенность, и это создает совершенно другую строку формата printf, не основанную на %f, но, ну, ... фу.
Кто-нибудь определил хороший способ справиться с этим типом требований?