Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

print (...) interpreted as function

2 réponses
Avatar
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>\n"
: "<li><a href=\"/~mpg$section\">$pages{$section}{'name'}</a></li>\n");

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.

2 réponses

Avatar
Paul Gaborit
À (at) Tue, 16 Sep 2008 22:41:57 +0200,
mpg écrivait (wrote):
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 - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Avatar
mpg
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.