print ?
Le
kurtz_le_pirate
bonjour,
encore un mystère de perl pour moi. si je résume :
si je fais :
print $objPropEntry->Name," : $value";
j'obtiens par exemple :
scriptPath : Scr_ctx_ScripteC.bat
si je fais :
print OUTFILE $objPropEntry->Name." = $value";
j'obtiens
scriptPath : Scr_ctx_ScripteC.bat
si je fais :
print OUTFILE "$objPropEntry->Name = $value";
j'obtiens :
Win32::OLE=HASH(0x199bf24)->Name = Scr_ctx_ScripteC.bat
pourquoi n'y a-t-il pas d'interpretation de $objPropEntry->Name dans
ce cas ?
ps : en fait j'écris dans un fichier html. la ligne exacte est :
print OUTFILE
"<tr><td><b>$objPropEntry->Name</b></td><td>$value</td></tr>";
mais c'est pas un problème de html.
--
klp
encore un mystère de perl pour moi. si je résume :
si je fais :
print $objPropEntry->Name," : $value";
j'obtiens par exemple :
scriptPath : Scr_ctx_ScripteC.bat
si je fais :
print OUTFILE $objPropEntry->Name." = $value";
j'obtiens
scriptPath : Scr_ctx_ScripteC.bat
si je fais :
print OUTFILE "$objPropEntry->Name = $value";
j'obtiens :
Win32::OLE=HASH(0x199bf24)->Name = Scr_ctx_ScripteC.bat
pourquoi n'y a-t-il pas d'interpretation de $objPropEntry->Name dans
ce cas ?
ps : en fait j'écris dans un fichier html. la ligne exacte est :
print OUTFILE
"<tr><td><b>$objPropEntry->Name</b></td><td>$value</td></tr>";
mais c'est pas un problème de html.
--
klp

Poser une question


"kurtz_le_pirate"
Perl n'effectue d'interpolation que sur les variables... pas sur les
appels de procédures, de fonction ou de méthodes.
La manière simple de faire est donc :
print $objPropEntry->Name, " = $valuen";
ou :
print $objPropEntry->Name . " = $valuen";
(Dans le premier cas, la méthode est appelée dans un contexte de liste
alors que dans le second, elle est appelée dans un contexte scalaire.)
Pour forcer l'interpolation d'un appel de fonction, on peut écrire :
print "@{[$objPropEntry->Name]} = $valuen";
ou :
print "@{[scalar $objPropEntry->Name]} = $valuen";
(Dans le premier cas, la méthode est appelée dans un contexte de liste
alors que dans le second, elle est appelée dans un contexte scalaire.)
Ce n'est pas complètement équivalent à cause de la variable $, qui est
utilisée lors de l'interpolation d'une liste. De plus, dans ce cas, le
passage par l'interpolation est plus lent.
--
Paul Gaborit - Perl en français -
merci m'sieu paul :))
je n'avais pas remarqué cette subtilité d'appel de procédure/méthode !
maintenant tout baigne.
--
klp
Salut,
Si tu y tiens vraiment tu peux essayer Perls6::Interpolators
-- jmf
Jean-Marc FRIGERIO
Je ne suis pas sûr que ce sera plus rapide... Je dirais même plus : je
suis sûr que ce sera encore moins rapide. ;-)
--
Paul Gaborit - Perl en français -