Sto pianificando di passare due variabili a una funzione perl, una delle quali può essere facoltativa. Sto cercando di verificare se il secondo è definito o meno, ma non funziona correttamente. Quando ho chiamato la funzione myFunction (18), si presuppone che la variabile $ opzionale sia definita e vada alla dichiarazione else. Ma nella dichiarazione else quando si accede alla variabile $ opzionale, viene generato un errore "non inizializzato". Questo è esattamente l'opposto di quello che mi aspettavo. Qualsiasi aiuto è molto apprezzato.Uso di defined/undef in Perl
sub myFunction {
my ($length, $optional) = (@_);
if(undef($optional)
{
more code..
}
else
{
more code...
}
}
myFunction(18)
Se stai cercando di scoprire quanti vengono passati, quindi prendi il conteggio degli argomenti: 'scalare (@_)'. Se chiami 'foo (4, undef)', hai passato 2 arg. –
Questo perché il test per un valore non definito è ['non definito'] (http://perldoc.perl.org/functions/defined.html), non [' undef'] (http://perldoc.perl.org /functions/undef.html). – hd1