executer un module dans un environemment protégé [ perl ] - Programmation
Marsh Posté le 05-04-2002 à 14:53:54
sihal_again a écrit a écrit : Salut, Est ce que vous sauriez comment executer un module perl de telle maniere que les eventuels "die" inclus dans ce module ne tuent pas mon script par la meme occasion? |
Tu veux exécuter un module perl ? c-a-d ???
Tu parles d'un script Perl lancé depuis le tien ?
Si tu veux que ton programme conserve la main, il faut de toutes façons lancer le second script via une commande system "mon autre script";
si tu fais exec "mon autre script"; ton programme lancant cette instruction perd la main et ne la retrouvera pas.
Maintenant, si tu as des die() dans le second programme et que tu passes par system, ça ne tuera pas ton programme principal. Maintenant, encore faut-il que ton prog puisse récupérer les erreurs du second ...
M'enfin, tu m'embrouille avec ton histoire de module
Marsh Posté le 05-04-2002 à 14:58:56
non en fait j'inclue un mudule: ( use Mon_module::truc; )
mais a l'interieur des scripts de ce module il ya un die, qui fait mourrir le script ayant inclut le module . ce qui me . donc je me demande comment faire pour que si ce module ai un pb quelquonque il meure trankill dans son coin sans tuer aussi l'appelant
Marsh Posté le 05-04-2002 à 15:00:30
Tiens, petit exemple d'un programme retournant qq chose à un programme qui l'a exécuté :
script2.pl :
$toto = 1;
if ($toto / 1) {
print "non nul";
} else {
print "nul";
}
script principal :
$retour;
$retour = `script2.pl`;
if ($retour =~ /^non nul$/) {
print "ok";
else {
print "pas ok";
die();
}
C'était juste un exemple tout bête d'exécution d'un second script avec récupération (et dans une seule instruction) de ce qu'il retourne
Marsh Posté le 05-04-2002 à 15:03:22
sihal_again a écrit a écrit : non en fait j'inclue un mudule: ( use Mon_module::truc; ) mais a l'interieur des scripts de ce module il ya un die, qui fait mourrir le script ayant inclut le module . ce qui me . donc je me demande comment faire pour que si ce module ai un pb quelquonque il meure trankill dans son coin sans tuer aussi l'appelant |
Arf ok, j'avais tout faux !
ben mets en commentaire le die() du module et remplace-le par un warn()
ça t'affichera l'erreur constatée en tant qu'avertissement et ça ne tuera pas ton programme
maintenant, quand on met du die() quelque part, c'est que l'on veut sécuriser les traitements qui se déroulent après ... A faire en étant sûr de ton coup
Marsh Posté le 05-04-2002 à 15:38:31
deja , merci pour tes reponses mais.......
j'y avais deja pensé, mais je ne veux pas modifier le script du module, je veux le laisser en l'etat! donc il faut trouver un moyen de bypasser le die ... et je ne sais pas comment, et j'ai pas le temsp de lire les 700 pages du Camel.
Marsh Posté le 05-04-2002 à 15:41:50
sihal_again a écrit a écrit : deja , merci pour tes reponses mais....... j'y avais deja pensé, mais je ne veux pas modifier le script du module, je veux le laisser en l'etat! donc il faut trouver un moyen de bypasser le die ... et je ne sais pas comment, et j'ai pas le temsp de lire les 700 pages du Camel. |
arf, alors là je sais pas, sorry
Marsh Posté le 05-04-2002 à 15:53:22
ben tant pis. je vais chercher jusque mort s'ensuive
Marsh Posté le 05-04-2002 à 17:08:15
up
Marsh Posté le 08-04-2002 à 09:39:14
up personne ne sait? ya po de perlistes ici?
Marsh Posté le 08-04-2002 à 09:49:33
sihal_again a écrit a écrit : up personne ne sait? ya po de perlistes ici? |
ben si, moi
je crois que tu ferais bien de t'inscrire au mailing des Paris Perl's Mongueurs, tu aurais une réponse de mecs qui se la touchent super bien en Perl (sérieux) :
http://paris.mongueurs.net/
Si tu veux vraiment une réponse précise et rapide, inscrit-toi chez eux, y sont formidables
Marsh Posté le 08-04-2002 à 10:16:58
oki j'y vais de ce pas
Marsh Posté le 08-04-2002 à 11:54:27
bon j'ai deux solutions a ce problème
soit :
use sigtrap qw(die normal-signals error-signals)
supposé "trapper" les erreurs mais j'ai pas testé,
sinon un truc qui marche:
eval {
...
die "fatal error";
};
if ($@) {
# $@ contient "fatal error"
}
valavala
Marsh Posté le 08-04-2002 à 12:19:09
sihal_again a écrit a écrit : bon j'ai deux solutions a ce problème soit : use sigtrap qw(die normal-signals error-signals) supposé "trapper" les erreurs mais j'ai pas testé, sinon un truc qui marche: eval { ... die "fatal error"; }; if ($@) { # $@ contient "fatal error" } valavala |
je sais, j'ai vu la réponse dans la mailing
Marsh Posté le 08-04-2002 à 12:48:49
lol c vraix
bon ben au cas ou on serais plus de 2 perlistes sur HW LOL
Marsh Posté le 08-04-2002 à 12:50:21
sihal_again a écrit a écrit : lol c vraix bon ben au cas ou on serais plus de 2 perlistes sur HW LOL |
j'ai des doutes, z'aiment po Perl ici
Marsh Posté le 08-04-2002 à 12:54:03
ben moi j'aime bien. je prefere php pour editer des pages web mais pour bidouiller des trucs sur serveur perl c royal. m'enfin question de gout
Marsh Posté le 08-04-2002 à 12:55:28
sihal_again a écrit a écrit : ben moi j'aime bien. je prefere php pour editer des pages web mais pour bidouiller des trucs sur serveur perl c royal. m'enfin question de gout |
Je bosse avec des bases de données et je passe bcp de temps à scanner des chaines de caractères, pour ce cas de figure Perl est top moumoute
Marsh Posté le 08-04-2002 à 13:01:48
yes regexp rulez lol
j'ai encore du mal mais c vraix que c top pratique
Marsh Posté le 05-04-2002 à 12:30:48
Salut,
Est ce que vous sauriez comment executer un module perl de telle maniere que les eventuels "die" inclus dans ce module ne tuent pas mon script par la meme occasion?
---------------
Graphisme, créations, court-métrages, fonds d'écrans :