Je lis un fichier html contenant, dans son corps, des noms de scalaires
déclarés et initialisés dans mon script.
Le fichier contient par exemple : "Hello, my name is $name".
J'éxecute ensuite la fonction "print" pour chacune des lignes récupérées.
Je me disais qu'il y avait peut-être un espoir pour que Perl imprime la
valeur des scalaires plutôt que leur nom, comme il le ferait avec print
"Hello my name is $name\n", mais malheureusement pas.
Ma question est donc : comment remplacer automatiquement les noms des
scalaires récupérés par leurs valeurs respectives ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jack
$titi="Hello, my name is $name";
Le 29/04/2004 11:08, :
Bonjour,
Je débute en Perl.
Je lis un fichier html contenant, dans son corps, des noms de scalaires déclarés et initialisés dans mon script.
Le fichier contient par exemple : "Hello, my name is $name".
J'éxecute ensuite la fonction "print" pour chacune des lignes récupérées. Je me disais qu'il y avait peut-être un espoir pour que Perl imprime la valeur des scalaires plutôt que leur nom, comme il le ferait avec print "Hello my name is $namen", mais malheureusement pas.
Ma question est donc : comment remplacer automatiquement les noms des scalaires récupérés par leurs valeurs respectives ?
Vous remerciant par avance,
$titi="Hello, my name is $name";
Le 29/04/2004 11:08, :
Bonjour,
Je débute en Perl.
Je lis un fichier html contenant, dans son corps, des noms de scalaires
déclarés et initialisés dans mon script.
Le fichier contient par exemple : "Hello, my name is $name".
J'éxecute ensuite la fonction "print" pour chacune des lignes récupérées.
Je me disais qu'il y avait peut-être un espoir pour que Perl imprime la
valeur des scalaires plutôt que leur nom, comme il le ferait avec print
"Hello my name is $namen", mais malheureusement pas.
Ma question est donc : comment remplacer automatiquement les noms des
scalaires récupérés par leurs valeurs respectives ?
Je lis un fichier html contenant, dans son corps, des noms de scalaires déclarés et initialisés dans mon script.
Le fichier contient par exemple : "Hello, my name is $name".
J'éxecute ensuite la fonction "print" pour chacune des lignes récupérées. Je me disais qu'il y avait peut-être un espoir pour que Perl imprime la valeur des scalaires plutôt que leur nom, comme il le ferait avec print "Hello my name is $namen", mais malheureusement pas.
Ma question est donc : comment remplacer automatiquement les noms des scalaires récupérés par leurs valeurs respectives ?
Vous remerciant par avance,
Kira
Jack wrote:
$titi="Hello, my name is $name";
Merci pour cette réponse, mais ça ne règle malheureusement pas le problème puisque ma chaîne est lue à partir d'un fichier (html) en utilisant foreach $line (@Data). Les scalaires representés dans la ligne ne sont pas "convertis" : c'est toujours "$name" qui apparaît quand on affiche la ligne, et non sa valeur.
Merci.
Jack wrote:
$titi="Hello, my name is $name";
Merci pour cette réponse, mais ça ne règle malheureusement pas le
problème puisque ma chaîne est lue à partir d'un fichier (html) en
utilisant foreach $line (@Data).
Les scalaires representés dans la ligne ne sont pas "convertis" : c'est
toujours "$name" qui apparaît quand on affiche la ligne, et non sa valeur.
Merci pour cette réponse, mais ça ne règle malheureusement pas le problème puisque ma chaîne est lue à partir d'un fichier (html) en utilisant foreach $line (@Data). Les scalaires representés dans la ligne ne sont pas "convertis" : c'est toujours "$name" qui apparaît quand on affiche la ligne, et non sa valeur.
Merci.
Paul GABORIT
À (at) Thu, 29 Apr 2004 11:08:27 +0200, Kira écrivait (wrote):
Je lis un fichier html contenant, dans son corps, des noms de scalaires déclarés et initialisés dans mon script.
Le fichier contient par exemple : "Hello, my name is $name".
J'éxecute ensuite la fonction "print" pour chacune des lignes récupérées. Je me disais qu'il y avait peut-être un espoir pour que Perl imprime la valeur des scalaires plutôt que leur nom, comme il le ferait avec print "Hello my name is $namen", mais malheureusement pas.
Ma question est donc : comment remplacer automatiquement les noms des scalaires récupérés par leurs valeurs respectives ?
Supposons que $line contient une ligne de votre fichier HTML (avec ou non des $name)... Si vous faites :
print $line;
les $name ne sont pas remplacés par leurs valeurs.
Si vous faites :
print eval ""$line"";
les $name seront remplacés.
*Mais* (car il y a un mais !) c'est très dangereux surtout si vous ne pouvez pas contrôler le contenu du fichier HTML. Pour vous en convaincre, placer la ligne suivante dans votre fichier HTML :
Le nom est @{[$name = "coucou"]}...
Stockez la valeur que vous voulez dans la variable $name de votre script. Après affichage du fichier HTML via la méthode que je vous ai donnée, votre variable contiendra "coucou" !!!
En fait la "bonne" solution pour votre problème passe par l'utilisation de l'une des nombreuses classes qui gèrent des template. Par exemple HTML::Template.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Thu, 29 Apr 2004 11:08:27 +0200,
Kira <none@none.com> écrivait (wrote):
Je lis un fichier html contenant, dans son corps, des noms de scalaires
déclarés et initialisés dans mon script.
Le fichier contient par exemple : "Hello, my name is $name".
J'éxecute ensuite la fonction "print" pour chacune des lignes récupérées.
Je me disais qu'il y avait peut-être un espoir pour que Perl imprime la
valeur des scalaires plutôt que leur nom, comme il le ferait avec print
"Hello my name is $namen", mais malheureusement pas.
Ma question est donc : comment remplacer automatiquement les noms des
scalaires récupérés par leurs valeurs respectives ?
Supposons que $line contient une ligne de votre fichier HTML (avec ou non des
$name)... Si vous faites :
print $line;
les $name ne sont pas remplacés par leurs valeurs.
Si vous faites :
print eval ""$line"";
les $name seront remplacés.
*Mais* (car il y a un mais !) c'est très dangereux surtout si vous ne pouvez
pas contrôler le contenu du fichier HTML. Pour vous en convaincre, placer la
ligne suivante dans votre fichier HTML :
Le nom est @{[$name = "coucou"]}...
Stockez la valeur que vous voulez dans la variable $name de votre
script. Après affichage du fichier HTML via la méthode que je vous ai donnée,
votre variable contiendra "coucou" !!!
En fait la "bonne" solution pour votre problème passe par l'utilisation de
l'une des nombreuses classes qui gèrent des template. Par exemple
HTML::Template.
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Thu, 29 Apr 2004 11:08:27 +0200, Kira écrivait (wrote):
Je lis un fichier html contenant, dans son corps, des noms de scalaires déclarés et initialisés dans mon script.
Le fichier contient par exemple : "Hello, my name is $name".
J'éxecute ensuite la fonction "print" pour chacune des lignes récupérées. Je me disais qu'il y avait peut-être un espoir pour que Perl imprime la valeur des scalaires plutôt que leur nom, comme il le ferait avec print "Hello my name is $namen", mais malheureusement pas.
Ma question est donc : comment remplacer automatiquement les noms des scalaires récupérés par leurs valeurs respectives ?
Supposons que $line contient une ligne de votre fichier HTML (avec ou non des $name)... Si vous faites :
print $line;
les $name ne sont pas remplacés par leurs valeurs.
Si vous faites :
print eval ""$line"";
les $name seront remplacés.
*Mais* (car il y a un mais !) c'est très dangereux surtout si vous ne pouvez pas contrôler le contenu du fichier HTML. Pour vous en convaincre, placer la ligne suivante dans votre fichier HTML :
Le nom est @{[$name = "coucou"]}...
Stockez la valeur que vous voulez dans la variable $name de votre script. Après affichage du fichier HTML via la méthode que je vous ai donnée, votre variable contiendra "coucou" !!!
En fait la "bonne" solution pour votre problème passe par l'utilisation de l'une des nombreuses classes qui gèrent des template. Par exemple HTML::Template.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
Michel Rodriguez
Kira wrote:
Je lis un fichier html contenant, dans son corps, des noms de scalaires déclarés et initialisés dans mon script.
Le fichier contient par exemple : "Hello, my name is $name".
J'éxecute ensuite la fonction "print" pour chacune des lignes récupérées. Je me disais qu'il y avait peut-être un espoir pour que Perl imprime la valeur des scalaires plutôt que leur nom, comme il le ferait avec print "Hello my name is $namen", mais malheureusement pas.
Tu peux faire une substitution, mais en fait il y a plus simple: utilise un module de template. Il y en a des tas sur CPAN, celui que j'utilise pour les trucs simple c'est Text::Template. Dans ton fichier tu ecris "Hello, my name is {$name}" et Text::Template te remplacera tout ce qui est entre { }.
Ca a plusieurs avantages: tu evites d'essayer de remplacer par exemple micro$oft dans une page ;--), tu controles exactement les variables que tu laisse visible dans le html. Et puis ca t'habitues a utiliser des modules!
POur installer des modules, si tu es sur windows tu peux utiliser ppm, sinon installe CPANPLUS, ca te simplifiera la vie. Enfin si ton cgi est sur un serveur heberge ou tu ne peux pas installer de modules en root, lis "perldoc -q module" pour voir comment installer un module dans un repertoire a toi.
-- Michel Rodriguez Perl & XML http://www.xmltwig.com
Kira wrote:
Je lis un fichier html contenant, dans son corps, des noms de scalaires
déclarés et initialisés dans mon script.
Le fichier contient par exemple : "Hello, my name is $name".
J'éxecute ensuite la fonction "print" pour chacune des lignes récupérées.
Je me disais qu'il y avait peut-être un espoir pour que Perl imprime la
valeur des scalaires plutôt que leur nom, comme il le ferait avec print
"Hello my name is $namen", mais malheureusement pas.
Tu peux faire une substitution, mais en fait il y a plus simple: utilise
un module de template. Il y en a des tas sur CPAN, celui que j'utilise
pour les trucs simple c'est Text::Template. Dans ton fichier tu ecris
"Hello, my name is {$name}" et Text::Template te remplacera tout ce qui
est entre { }.
Ca a plusieurs avantages: tu evites d'essayer de remplacer par exemple
micro$oft dans une page ;--), tu controles exactement les variables que
tu laisse visible dans le html. Et puis ca t'habitues a utiliser des
modules!
POur installer des modules, si tu es sur windows tu peux utiliser ppm,
sinon installe CPANPLUS, ca te simplifiera la vie. Enfin si ton cgi est
sur un serveur heberge ou tu ne peux pas installer de modules en root,
lis "perldoc -q module" pour voir comment installer un module dans un
repertoire a toi.
--
Michel Rodriguez
Perl & XML
http://www.xmltwig.com
Je lis un fichier html contenant, dans son corps, des noms de scalaires déclarés et initialisés dans mon script.
Le fichier contient par exemple : "Hello, my name is $name".
J'éxecute ensuite la fonction "print" pour chacune des lignes récupérées. Je me disais qu'il y avait peut-être un espoir pour que Perl imprime la valeur des scalaires plutôt que leur nom, comme il le ferait avec print "Hello my name is $namen", mais malheureusement pas.
Tu peux faire une substitution, mais en fait il y a plus simple: utilise un module de template. Il y en a des tas sur CPAN, celui que j'utilise pour les trucs simple c'est Text::Template. Dans ton fichier tu ecris "Hello, my name is {$name}" et Text::Template te remplacera tout ce qui est entre { }.
Ca a plusieurs avantages: tu evites d'essayer de remplacer par exemple micro$oft dans une page ;--), tu controles exactement les variables que tu laisse visible dans le html. Et puis ca t'habitues a utiliser des modules!
POur installer des modules, si tu es sur windows tu peux utiliser ppm, sinon installe CPANPLUS, ca te simplifiera la vie. Enfin si ton cgi est sur un serveur heberge ou tu ne peux pas installer de modules en root, lis "perldoc -q module" pour voir comment installer un module dans un repertoire a toi.
-- Michel Rodriguez Perl & XML http://www.xmltwig.com