2011-07-14 2 views
2

Dans mon code Perl, j'ai utilisé la ligne suivante:Comment éviter des informations supplémentaires à imprimer

$host=$hostname if ($host eq undef); 

Dans la sortie, je reçois un message suivant:

Use of uninitialized value $host in string eq at cli.pl line 18. 

Bien que je ne suis pas en utilisant strict. Comment puis-je éviter que ce message soit imprimé en sortie?

Répondre

5

Utilisez la fonction defined:

$host=$hostname if (!defined $host); 

Ou une forme plus courte: (. Et use strict, vraiment)

$host=$hostname unless $host; 

+0

Merci Mat ... Il a résolu le problème. – Joe

+2

Si cela vous a aidé, veuillez lire ceci: [Comment accepter une réponse?] (Http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). Cela aidera les autres à savoir que cette question est résolue. – Mat

2

Cet opérateur peut aider: defined-or operator

$host = $host // $hostname; 

si $host est définie même sa valeur est '', 0, '0', il utilisera $host comme valeur, que si $host est undef, $host vous obtiendrez la valeur

1

du $hostname Je pense que vous voulez

$host //= $hostname; 

// est l'opérateur "défini ou". // = est sa version d'affectation.

Questions connexes