print (...) interpreted as function

Le
mpg
Bonjour,

pourquoi est-ce que "print () interpreted as function" est un
avertissement ? Par exmple, est-ce que c'est « mal » d'écrire ?

print (($section eq $curr_sect)
? "<li id="navonecur">$pages{$section}{'name'}</li>"
: "<li><a href="/~mpg$section">$pages{$section}{'name'}</a></li>");

Si ce n'est pas « mal », y a-t-il un moyen de faire comprendre au
compilateur que c'est bien ce que j'ai voulu écrire et que c'est pas la
peine de me le signaler à chaque fois, merci ? (Un peu comme
« if ((a = b)) » en C, où les doubles parenthèses font généralement
comprendre au compilateur qu'on voulait en effet écrire « = » et
pas « == ».)

Merci,
Manuel.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Paul Gaborit
Le #17247911
À (at) Tue, 16 Sep 2008 22:41:57 +0200,
mpg
pourquoi est-ce que "print (...) interpreted as function" est un
avertissement ? Par exmple, est-ce que c'est « mal » d'écrire ?

print (($section eq $curr_sect)
? "<li id="navonecur">$pages{$section}{'name'}</li>n"
: "<li><a href="/~mpg$section">$pages{$section}{'name'}</a></li>n");



Parce que certains codent :

print ($section eq $curr_sect) ? "egal" : "diff";

en croyant que ce sera interprété comme :

print(($section eq $curr_sect) ? "egal" : "diff");

alors que c'est en fait interprété comme :

(print($section eq $curr_sect)) ? "egal" : "diff";

Ce qui n'est pas du tout la même chose ! ;-)

Si ce n'est pas « mal », y a-t-il un moyen de faire comprendre au
compilateur que c'est bien ce que j'ai voulu écrire et que c'est pas la
peine de me le signaler à chaque fois, merci ? (Un peu comme
« if ((a = b)) » en C, où les doubles parenthèses font généralement
comprendre au compilateur qu'on voulait en effet écrire « = » et
pas « == ».)



Pour éviter le message d'avertissement, il suffit de ne pas mettre
d'espace entre 'print' et la parenthèse ouvrante...

--
Paul Gaborit - Perl en français -
mpg
Le #17248011
Le (on) mardi 16 septembre 2008 23:46, Paul Gaborit a écrit (wrote) :

Parce que certains codent :

print ($section eq $curr_sect) ? "egal" : "diff";

en croyant que ce sera interprété comme :



Euh, oui, je faisais partie du "certains" jusqu'à il y a quelques
minutes :-) Mais ce qui m'avait surtout interpelé alors, c'était le
« useless use of string in void context ». Enfin je conçois qu'il y sans
doute des cas où on peut ne pas avoir la chance d'avoir un autre
avertissement après.

Pour éviter le message d'avertissement, il suffit de ne pas mettre
d'espace entre 'print' et la parenthèse ouvrante...



Merci.

Manuel.
Publicité
Poster une réponse
Anonyme