Bonjour,
je debute Perl et je butte sur un problème :
pour faire bref, j'ai une chaîne $str constituée de plusieurs lignes. Je
veux recuperer des infos dedans (plusieurs sur une même ligne). Je fais :
while(<>){
if(/avant_1ere_valeur/){
s/avant_1ere_//;
s/apres_1ere_valeur//;
$1ere_valeur=$$_;
}}
Ca marche. Mais si je veux recuperer ma deuxieme valeur et que je fais :
$_=$str;
while(<>){
if(/avant_2eme_valeur/){
s/avant_2eme_//;
s/apres_2eme_valeur//;
$2ere_valeur=$$_;
}}
Alors mon prg ne rentre même pas dans la boucle et ne se termine pas.
Kkun sait ce que je dois faire pour recuperer plusieurs valeurs sur une
même ligne ?
Merci
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
patrick
Bonjour,
Le mieux est de faire: while(<>) { if ($_ =~ /(première_valeur).*(seconde_valeur)/) { $val1 = $1 ; $val2 = $2; } }
Les parenthèse dans l'expression régulière permettent d'affecter aux variables $1 (pour la première paire de parenthèses) et $é (pour la seconde), le motif que tu recherches.
Bibi69 wrote:
Bonjour, je debute Perl et je butte sur un problème : pour faire bref, j'ai une chaîne $str constituée de plusieurs lignes. Je veux recuperer des infos dedans (plusieurs sur une même ligne). Je fais : while(<>){ if(/avant_1ere_valeur/){ s/avant_1ere_//; s/apres_1ere_valeur//; $1ere_valeur=$$_; }}
Ca marche. Mais si je veux recuperer ma deuxieme valeur et que je fais : $_=$str; while(<>){ if(/avant_2eme_valeur/){ s/avant_2eme_//; s/apres_2eme_valeur//; $2ere_valeur=$$_; }}
Alors mon prg ne rentre même pas dans la boucle et ne se termine pas.
Kkun sait ce que je dois faire pour recuperer plusieurs valeurs sur une même ligne ? Merci
Bonjour,
Le mieux est de faire:
while(<>)
{
if ($_ =~ /(première_valeur).*(seconde_valeur)/)
{
$val1 = $1 ;
$val2 = $2;
}
}
Les parenthèse dans l'expression régulière permettent d'affecter aux
variables $1 (pour la première paire de parenthèses) et $é (pour la
seconde), le motif que tu recherches.
Bibi69 wrote:
Bonjour,
je debute Perl et je butte sur un problème :
pour faire bref, j'ai une chaîne $str constituée de plusieurs lignes. Je
veux recuperer des infos dedans (plusieurs sur une même ligne). Je fais :
while(<>){
if(/avant_1ere_valeur/){
s/avant_1ere_//;
s/apres_1ere_valeur//;
$1ere_valeur=$$_;
}}
Ca marche. Mais si je veux recuperer ma deuxieme valeur et que je fais :
$_=$str;
while(<>){
if(/avant_2eme_valeur/){
s/avant_2eme_//;
s/apres_2eme_valeur//;
$2ere_valeur=$$_;
}}
Alors mon prg ne rentre même pas dans la boucle et ne se termine pas.
Kkun sait ce que je dois faire pour recuperer plusieurs valeurs sur une
même ligne ?
Merci
Le mieux est de faire: while(<>) { if ($_ =~ /(première_valeur).*(seconde_valeur)/) { $val1 = $1 ; $val2 = $2; } }
Les parenthèse dans l'expression régulière permettent d'affecter aux variables $1 (pour la première paire de parenthèses) et $é (pour la seconde), le motif que tu recherches.
Bibi69 wrote:
Bonjour, je debute Perl et je butte sur un problème : pour faire bref, j'ai une chaîne $str constituée de plusieurs lignes. Je veux recuperer des infos dedans (plusieurs sur une même ligne). Je fais : while(<>){ if(/avant_1ere_valeur/){ s/avant_1ere_//; s/apres_1ere_valeur//; $1ere_valeur=$$_; }}
Ca marche. Mais si je veux recuperer ma deuxieme valeur et que je fais : $_=$str; while(<>){ if(/avant_2eme_valeur/){ s/avant_2eme_//; s/apres_2eme_valeur//; $2ere_valeur=$$_; }}
Alors mon prg ne rentre même pas dans la boucle et ne se termine pas.
Kkun sait ce que je dois faire pour recuperer plusieurs valeurs sur une même ligne ? Merci
Bibi69
Bonjour,
Le mieux est de faire: while(<>) { if ($_ =~ /(première_valeur).*(seconde_valeur)/) { $val1 = $1 ; $val2 = $2; } }
Les parenthèse dans l'expression régulière permettent d'affecter aux variables $1 (pour la première paire de parenthèses) et $é (pour la seconde), le motif que tu recherches.
Bibi69 wrote:
Bonjour, je debute Perl et je butte sur un problème : pour faire bref, j'ai une chaîne $str constituée de plusieurs lignes. Je veux recuperer des infos dedans (plusieurs sur une même ligne). Je fais : while(<>){ if(/avant_1ere_valeur/){ s/avant_1ere_//; s/apres_1ere_valeur//; $1ere_valeur=$$_; }}
Ca marche. Mais si je veux recuperer ma deuxieme valeur et que je fais : $_=$str; while(<>){ if(/avant_2eme_valeur/){ s/avant_2eme_//; s/apres_2eme_valeur//; $2ere_valeur=$$_; }}
Alors mon prg ne rentre même pas dans la boucle et ne se termine pas.
Kkun sait ce que je dois faire pour recuperer plusieurs valeurs sur une même ligne ? Merci
Impecable, ça marche super bien.
Merci
Bonjour,
Le mieux est de faire:
while(<>)
{
if ($_ =~ /(première_valeur).*(seconde_valeur)/)
{
$val1 = $1 ;
$val2 = $2;
}
}
Les parenthèse dans l'expression régulière permettent d'affecter aux
variables $1 (pour la première paire de parenthèses) et $é (pour la
seconde), le motif que tu recherches.
Bibi69 wrote:
Bonjour,
je debute Perl et je butte sur un problème :
pour faire bref, j'ai une chaîne $str constituée de plusieurs lignes. Je
veux recuperer des infos dedans (plusieurs sur une même ligne). Je fais :
while(<>){
if(/avant_1ere_valeur/){
s/avant_1ere_//;
s/apres_1ere_valeur//;
$1ere_valeur=$$_;
}}
Ca marche. Mais si je veux recuperer ma deuxieme valeur et que je fais :
$_=$str;
while(<>){
if(/avant_2eme_valeur/){
s/avant_2eme_//;
s/apres_2eme_valeur//;
$2ere_valeur=$$_;
}}
Alors mon prg ne rentre même pas dans la boucle et ne se termine pas.
Kkun sait ce que je dois faire pour recuperer plusieurs valeurs sur une
même ligne ?
Merci
Le mieux est de faire: while(<>) { if ($_ =~ /(première_valeur).*(seconde_valeur)/) { $val1 = $1 ; $val2 = $2; } }
Les parenthèse dans l'expression régulière permettent d'affecter aux variables $1 (pour la première paire de parenthèses) et $é (pour la seconde), le motif que tu recherches.
Bibi69 wrote:
Bonjour, je debute Perl et je butte sur un problème : pour faire bref, j'ai une chaîne $str constituée de plusieurs lignes. Je veux recuperer des infos dedans (plusieurs sur une même ligne). Je fais : while(<>){ if(/avant_1ere_valeur/){ s/avant_1ere_//; s/apres_1ere_valeur//; $1ere_valeur=$$_; }}
Ca marche. Mais si je veux recuperer ma deuxieme valeur et que je fais : $_=$str; while(<>){ if(/avant_2eme_valeur/){ s/avant_2eme_//; s/apres_2eme_valeur//; $2ere_valeur=$$_; }}
Alors mon prg ne rentre même pas dans la boucle et ne se termine pas.
Kkun sait ce que je dois faire pour recuperer plusieurs valeurs sur une même ligne ? Merci