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.
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.
mpg
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 ! ;-)
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 -
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.
Merci.
Manuel.