Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

print (...) interpreted as function

0 views
Skip to first unread message

mpg

unread,
Sep 16, 2008, 4:41:57 PM9/16/08
to
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.

Paul Gaborit

unread,
Sep 16, 2008, 5:46:28 PM9/16/08
to

À (at) Tue, 16 Sep 2008 22:41:57 +0200,
mpg <m...@elzevir.fr> é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/>

mpg

unread,
Sep 16, 2008, 6:13:29 PM9/16/08
to
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.

0 new messages