[Perl] Que faire contre ce « warning » ?

Hugues hugues at max4mail.com
Sam 14 Jan 11:12:39 CET 2017


Bonjour

effectivement si tu ajoutes

while( $src && ($l = <$src>) && ($l !~ m/,1,/) ) {next;}

tu n'as plus le warning
mais aussi si tu supprimes

($l !~ m/,1,/)
  et tu le met dans le while

il doit commencer a tester la deuxièmement condition avant la première ?

Salutations
Hugues

Le 14/01/2017 à 10:06, Philippe Delavalade a écrit :
> Bonjour la liste.
>
> Voici un petit ECM qui produit le warning suivant :
>
> Value of <HANDLE> construct can be "0"; test with defined() at ./truc.pl
> line 11.
>
> \begin{script}
> #!/usr/bin/perl -w
>
> use Modern::Perl;
>
> my $src;
> my $l;
>
> open( $src, "<", "fichier" )
>    || die "\nImpossible d'ouvrir fichier\n";
>
> while( ($l = <$src>) && ($l !~ m/,1,/) ) {next;}
>
> close $src;
>
> exit 0;
> \end{script}
>
> À part cela, le script fait son boulot.
>
> Je ne comprends pas d'où vient le problème ni comment le résoudre en
> testant avec un defined().
>
> On peut contourner le problème en mettant la seconde condition dans le
> while avec par example
> while($l = <$src<) {last if($l =~ m/,1,/);}
>
> Mais ça n'explique pas la présence de l'avertissement.
>
> Merci de vos lumières.
>

-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://listes.mongueurs.net/mailman/private/perl/attachments/20170114/ec9e35b4/attachment.html>


Plus d'informations sur la liste de diffusion Perl