Je cherche une manière élégante de dénoter des valeurs non définies dans des situations où les nombres formatés rendent habituellement. Je vais travailler un petit exemple. Pour commencer, bien sûr vous ne pouvez pas utiliser ceci:Comment rendre des valeurs indéfinies à partir de printf en Perl?
#!/usr/bin/perl
use strict;
use warnings;
for my $s (1, 1.2, undef, 1.3) {
printf "%5.2f\n", $s;
}
... parce que les ongles »donnent des avertissements de vous avec « Utilisation de la valeur non initialisée ... » sur la troisième itération. L'étape suivante est quelque chose comme ceci:
#!/usr/bin/perl
use strict;
use warnings;
for my $s (1, 1.2, undef, 1.3) {
printf "%5.2f\n", $s//0;
}
Et, mon garçon, que j'aime le nouvel opérateur 5,10 « // », par le chemin. Mais ce n'est vraiment pas ce que je veux non plus, parce que la valeur de $ s n'est pas nulle, c'est indéfini. Ce que je veux vraiment quelque chose comme ceci:
#!/usr/bin/perl
use strict;
use warnings;
for my $s (1, 1.2, undef, 1.3) {
printf "%5.2f\n", $s//q();
}
... mais je ne peux pas parce que cela génère le problème « Argument « » est pas numérique ... » sur la troisième valeur.
Cela m'amène à la porte de ma question. Je peux bien sûr écrire du code qui vérifie chaque nombre que j'émets pour défini-ness, et cela crée une chaîne de format printf différente de% f non basée sur f, mais, bien, ... beurk. Est-ce que quelqu'un a défini une bonne façon de faire face à ce type d'exigence?