OVH Cloud OVH Cloud

remplacement Variable dans ligne de texte

3 réponses
Avatar
patrick.fontaine
je lis un fichier qui contient du texte et des variables

je ne me souviens plus de la fonction permettant que les champs
variables d'une ligne de texte reprenne leur fonction de variable.

J'ai déclaré $Monsieur = "XXXX";

je lis la ligne du fichier : bonjour $Monsieur

$Monsieur n'est pas une variable et est considéré comme du texte

3 réponses

Avatar
Jerome Abela
fontaine wrote:
J'ai déclaré $Monsieur = "XXXX";
je lis la ligne du fichier : bonjour $Monsieur


Réponse courte: $text =~ s/($w+)/$1/eeg;
Réponse détaillée: perldoc -q "expand variables"


Jerome.

Avatar
patrick.fontaine
c'est un plus compliqué:

j'ai un fichier composé de 2 champs (séparés par une tabulation)
j'ouvre le fichier dans un tableau:

$Valeur1 <tab> 15
$Valeur2 <tab> 10
$Valeur3 <tab> ($Valeur1 + $Valeur2)*2
$valeur4 <tab> $valeur5
$Nom <tab> toto

ce que je voudrais c'est:

print $valeur1 donne 15
print $valeur3 donne 50
print $nom donne toto

if ($valeur1 == $valeur2) donne faux etc ....
Avatar
Jean-Michel Hiver
fontaine wrote:
c'est un plus compliqué:

j'ai un fichier composé de 2 champs (séparés par une tabulation)
j'ouvre le fichier dans un tableau:

$Valeur1 <tab> 15
$Valeur2 <tab> 10
$Valeur3 <tab> ($Valeur1 + $Valeur2)*2
$valeur4 <tab> $valeur5
$Nom <tab> tot

ce que je voudrais c'est:

print $valeur1 donne 15
print $valeur3 donne 50
print $nom donne toto


Si tu veux etre propre mets tes valeurs dans un tableau de hachage et
utilise ca.

Si tu veux etre vraiment super crade caca et que tu n'utilise pas
strict; alors quelque chose comme ca doit suffire:

my $data = '
$Valeur1 <tab> 15
$Valeur2 <tab> 30
';

eval join ";n", map {
chomp();
s/t/=/;
$_
} split /n/, $data;

print $Valeur1 + $Valeur2;