Executer le contenu d'une variable [Perl] - Perl - Programmation
Marsh Posté le 28-12-2004 à 21:46:31
my $uptime='uptime'; print `$uptime`; |
Marsh Posté le 28-12-2004 à 22:20:56
my @uptime = `uptime`; # exécute la commande, garde l'output dans l'array @uptime
print join("\n", @uptime);
Marsh Posté le 28-12-2004 à 22:53:49
Tout d'un coup j'ai un gros doute sur ce que tu demande... La varialbe que tu veux evaluer, elle contient quoi exactement ? La chaine "my $uptime=`uptime`; print $uptime;" ?
Marsh Posté le 28-12-2004 à 23:39:03
oui, la variable que je veux executé contient : "my $uptime=`uptime`; print $uptime;". Et je souhaite que ma variable prenne le résultat de ce qui la contient.
Marsh Posté le 30-12-2004 à 02:48:59
j'ai trouvé
il suffit que je fasse :
Code :
|
où variable contient "my $uptime=`uptime`; print $uptime;"
Marsh Posté le 30-12-2004 à 06:56:40
je t'encourage pas à faire ce genre de truc, c'est plutot immonde...
Marsh Posté le 01-01-2005 à 16:31:17
arf
et t'as une idée pour le faire de maniere propre ?
Marsh Posté le 01-01-2005 à 16:52:46
je comprend pas vraiment ce que tu essaies de faire, pour moi interpréter un bloc de texte en perl on utilises eval()
Marsh Posté le 01-01-2005 à 17:26:23
bah, le bloc de text c'est pour les test, car après je mettrais des regex, et avec eval, j'ai pas réussi.
C'est le premier truc auquel j'ai pensé, mais ca marchait pas.
Je vais restester alors.
Marsh Posté le 01-01-2005 à 17:31:13
je devais etre très fatigué quand j'avais testé eval ...
je viens de le refaire, et ca marche
Marsh Posté le 01-01-2005 à 17:41:59
if ($^O eq 'linux') || die 'Commande non supporté sur cet os';
$pid = open(HANDLE, "/usr/bin/uptime |" );
while() { print; }
close(HANDLE);
Citation : NAME |
Marsh Posté le 01-01-2005 à 17:50:32
merci, mais c'est pas de ca que j'ai besoin.
J'ai testé sur uptime car je savais pas quoi mettre en fait.
Sinon, à la fin de la chaine renvoyé j'ai un "1\n", vous sauriez comment je peux ne pas l'avoir ?
Marsh Posté le 02-01-2005 à 04:03:07
\n c'est un retour de ligne
alors un petit
$foo =~ s/\n//;
Marsh Posté le 02-01-2005 à 16:44:14
matafan a écrit : chomp() fait ça mieux qu'un s///. |
j'ai jamais très apprécié les chomp
question de philosophie faut croire
Marsh Posté le 02-01-2005 à 21:44:31
finalement j'ai fait une regex qui me vire le "1\n" à la fin de chaque chaine
Marsh Posté le 28-12-2004 à 19:01:33
Je souhaiterai executer le contenu d'un variable en perl. J'ai testé eval, mais ca marche pas.
Voila un exemple de contenu de ma variable :
et je voudrais donc qu'après avoir executé le contenu, le contenu de ma variable soit du genre :
Une idée ?
(le contenu de la variable est extrait d'un fichier xml, et le contenu est la premiere citation)
Message édité par sharlaan le 28-12-2004 à 19:01:59
---------------
"Deux chose sont infinies, l'univers et la sotise humaine. Mais je ne suis pas sûr de ce j'affirme quant à l'univers." Albert Einstein