exécuter un script perl depuis un autre programme perl
Bonjour,
débutant en perl, j'aimerais svp, que quelqu'un me débloque sur comment exécuter un script perl depuis un autre script. ds le programme perl ci-dessous, j'appelle Test.pl entre ` `et Test.pl ne s'exécute pas dans ce programme alors que j'arrive à l'exécuter tout seul en ligne de commande(pas besoin d'arguments). Quelqu'un pourrait il m'aider sur la question afin que j'avance car je suis vraiment buté à ce niveau.
merci d'avance.
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| my @ligne;
open (USER_RECORDS , "toto.txt") || die ;
sub function{
$i=0;
while (<USER_RECORDS>) { # parcours fichier
$i ++;
$lignecomplete=$_; #j'affecte chaque ligne à lignecomplete
(@maligne) = split(/,/,$lignecomplete);
`perl Test.pl `; #avec ou sans pointvirgule, ça marche pas
}
}
function(); |
exécuter un script perl depuis un autre script perl
C'est encore moi!!
Pour la question posée là haut, je ne veux pas appeler une à une les fonctions ou procédures de Test.pl, ce que je veux, c'est exécuter tout le fichier systématiquement. c'est vraiment très urgent. je vous remercie d'avance.
probleme de chaine composé
Oui Beniou, merci pour cet exemple, il fonctionne chez moi aussi sauf que si dans ton fichier toto.txt, tu as une ligne du genre:
tata,toto,titi marie
le truc est qu'on a une chaine composée, ça nous fait par éclatement avec le split 3 sous chaines qu'on passe alors que sur la console, 'marie' n'apparait pas du tout;pourtant on devrait avoir 'titi marie' dans $values[2]. on a bien 'titi marie' dans $arg3, j'ai vérifié et pas dans $values[2], il jette l'autre partie.
1) comment faire dans ce cas pour qu'on ait $values[2]="titi marie"?
2) Juste pour comprendre ton truc: l'intruction
if($line !~ /^\s+$/){# parcours fichier
veut -elle dire que le modèle doit commencer en début de ligne sans contenir un caractère d'espacement (pour que le "if" soit vrai)? ou stp explique moi si cela traduit autre chose?
Merci encore d'avance.
re-iteration du probleme precedent
slut,
1) En ce qui concerne la question précédente, la réponse que tu m'as donnée (philou) ne marche pas, il m'affiche "titi" et pas "titi marie" comme troisième argument. Le problème est que quand il voit l'espace, il ignore l'autre partie de la chaine i.e., "marie"; pourtant je veux qu'il m'affiche "titi marie" comme troisième argument.
2) soit les instructions perl ci-dessous qui utilise une librairie sélénium de perl. la "ème instruction prend en paramètre une instruction xpath. ce que je veux obtenir, c'est "Page personnelle de superuser" i.e., $msg[1]="superuser" (puisque je récupère superuser dans $msg[1] Sauf que mon formatage n'est pas bon puisqu'il m'affiche une erreur à la compilation. Comment pourrais je régler ce problème?
Code:
1 2 3 4
|
$message="User login ok, superuser";
@msg = split(/,/,$message);
$sel->is_element_present_ok("//td[\@class='headline']/a[\@title="Page personnelle de " . "$msg[1]"]"); |
Merci de bien vouloir me répondre!
probleme d'arguments resolu et formatage non résolu
Merci Beniou pour cette précision; ça marche!
j'ai galéré le week end dernier là dessus, et ça me soulage beaucoup.
j'ai encore un problème de formatage de chaine qui concerne la dernière instruction du petit bout de code que je viens d'envoyer.
et c'est encore galère. je pense qu'avec ça, je pourrai bien repartir.
Merci encore!
erreur de compilation perl: variable indéfini
Slut,
j'ai une fonction InRdvDtata qui me dit que je n'ai pas initialisé $df[0] (on le constate en faisant un print comme fait ci-dessous. Cependant, la variable analogue $dd[0] marche bien! on dirait que le premier tableau en paramètre masque le second. Quelqu'un pourrait il m'aider à faire fonctionner ce bout de code?
je veux récupérer avec les deux dernières instruction la date sous la forme 8-13-2015 et 15-13-2015.
Merci d'avance!
Code:
1 2 3 4 5 6 7 8
| sub InRdvData {
my ($mytxt, @dd, @df, $lieu) = @_;
# Insert here the implementation
print ("mon text= $mytxt\t toto= $df[0]\t titi= $dd[1]\n");
my $d=$dd[0]."-".$dd[1]."-".$dd[2];
my $f=$df[0]."-".$df[1]."-".$df[2];
}
InRdvData("bidule", (8, 13, 2015),(15, 13, 2015),"Bureau"); |