Vous voyez souvent le vérifier definedness de sorte que vous n'avez pas à traiter avec l'avertissement pour l'utilisation d'une valeur undef (et en Perl 5.10, il vous indique la délinquance de la variable):
Use of uninitialized value $name in ...
Donc, pour obtenir autour de cet avertissement, les gens viennent avec toutes sortes de code, et que le code commence à ressembler à une partie importante de la solution plutôt que du bubble-gum et du ruban adhésif qu'il est. Parfois, il est préférable de montrer ce que vous faites explicitement à la désactivation de l'avertissement que vous essayez d'éviter:
{
no warnings 'uninitialized';
if( length $name ) {
...
}
}
Dans d'autres cas, utiliser une sorte de valeur null à la place des données. Avec Perl 5.10 définies ou opérateur, vous pouvez donner des length
explicite d'une chaîne vide (définis, et de donner en retour de longueur zéro) au lieu de la variable qui va déclencher l'alerte:
use 5.010;
if( length( $name // '' ) ) {
...
}
En Perl 5.12, c'est un peu plus facile parce qu' length
sur une valeur non définie également retourne undefined. Cela peut sembler un peu de la bêtise, mais ce qui plaît le mathématicien que je l'aurais voulu être. Qui n'a pas d'émettre un avertissement, qui est la raison de cette question existe.
use 5.012;
use warnings;
my $name;
if( length $name ) { # no warning
...
}