encore un mystère de perl pour moi. si je résume :
si je fais :
print $objPropEntry->Name," : $value\n";
j'obtiens par exemple :
scriptPath : Scr_ctx_ScripteC.bat
si je fais :
print OUTFILE $objPropEntry->Name." = $value\n";
j'obtiens
scriptPath : Scr_ctx_ScripteC.bat
si je fais :
print OUTFILE "$objPropEntry->Name = $value\n";
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>\n";
mais c'est pas un problème de html.
(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 - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Mon, 29 May 2006 10:35:55 +0200,
"kurtz_le_pirate" <kurtzlepirate@yahoo.fr> écrivait (wrote):
encore un mystère de perl pour moi. si je résume :
si je fais :
print $objPropEntry->Name," : $valuen";
j'obtiens par exemple :
scriptPath : Scr_ctx_ScripteC.bat
si je fais :
print OUTFILE $objPropEntry->Name." = $valuen";
j'obtiens
scriptPath : Scr_ctx_ScripteC.bat
si je fais :
print OUTFILE "$objPropEntry->Name = $valuen";
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 ?
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 :
(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 - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
(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 - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
kurtz le pirate
In article , Paul Gaborit wrote:
Perl n'effectue d'interpolation que sur les variables... pas sur les appels de procédures, de fonction ou de méthodes.
merci m'sieu paul :))
je n'avais pas remarqué cette subtilité d'appel de procédure/méthode ! maintenant tout baigne.
-- klp
In article <r74pz9kxgu.fsf@vaugirard.enstimac.fr>,
Paul Gaborit <Paul.Gaborit@invalid.invalid> wrote:
Perl n'effectue d'interpolation que sur les variables... pas sur les
appels de procédures, de fonction ou de méthodes.
merci m'sieu paul :))
je n'avais pas remarqué cette subtilité d'appel de procédure/méthode !
maintenant tout baigne.
(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.
Salut, Si tu y tiens vraiment tu peux essayer Perls6::Interpolators
-- jmf
Paul Gaborit wrote:
À (at) Mon, 29 May 2006 10:35:55 +0200,
"kurtz_le_pirate" <kurtzlepirate@yahoo.fr> écrivait (wrote):
encore un mystère de perl pour moi. si je résume :
si je fais :
print $objPropEntry->Name," : $valuen";
j'obtiens par exemple :
scriptPath : Scr_ctx_ScripteC.bat
si je fais :
print OUTFILE $objPropEntry->Name." = $valuen";
j'obtiens
scriptPath : Scr_ctx_ScripteC.bat
si je fais :
print OUTFILE "$objPropEntry->Name = $valuen";
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 ?
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 :
(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.
Salut,
Si tu y tiens vraiment tu peux essayer Perls6::Interpolators
(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.
Salut, Si tu y tiens vraiment tu peux essayer Perls6::Interpolators
-- jmf
Paul Gaborit
À (at) Tue, 06 Jun 2006 15:47:37 +0200, Jean-Marc FRIGERIO écrivait (wrote):
Si tu y tiens vraiment tu peux essayer Perls6::Interpolators [...Perl6::Interpolators...]
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 - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Tue, 06 Jun 2006 15:47:37 +0200,
Jean-Marc FRIGERIO <Frigerio@pierroton.inra.fr> écrivait (wrote):
Si tu y tiens vraiment tu peux essayer Perls6::Interpolators
[...Perl6::Interpolators...]
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 - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>