Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1429 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Executer le contenu d'une variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] Executer le contenu d'une variable

n°933209
sharlaan
Posté le 28-12-2004 à 19:01:33  profilanswer
 

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 :

Code :
  1. my $uptime=`uptime`; print $uptime;


 
et je voudrais donc qu'après avoir executé le contenu, le contenu de ma variable soit du genre :

Code :
  1. 19:09:25 up  4:00,  2 users,  load average: 0.22, 0.19, 0.14


 
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
mood
Publicité
Posté le 28-12-2004 à 19:01:33  profilanswer
 

n°933267
matafan
Posté le 28-12-2004 à 21:46:31  profilanswer
 

my $uptime='uptime'; print `$uptime`;


Message édité par matafan le 28-12-2004 à 21:46:48
n°933292
burgergold
5$? va chez l'diable!
Posté le 28-12-2004 à 22:20:56  profilanswer
 

my @uptime = `uptime`; # exécute la commande, garde l'output dans l'array @uptime
print join("\n", @uptime);

n°933310
matafan
Posté le 28-12-2004 à 22:53:49  profilanswer
 

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;" ?

n°933347
sharlaan
Posté le 28-12-2004 à 23:39:03  profilanswer
 

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.


---------------
"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
n°933938
sharlaan
Posté le 30-12-2004 à 02:48:59  profilanswer
 

j'ai trouvé
il suffit que je fasse :

Code :
  1. my $action = `perl -e '$variable'`;


où variable contient "my $uptime=`uptime`; print $uptime;"
 
 :pt1cable:  :pt1cable:


---------------
"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
n°933957
burgergold
5$? va chez l'diable!
Posté le 30-12-2004 à 06:56:40  profilanswer
 

je t'encourage pas à faire ce genre de truc, c'est plutot immonde...

n°934887
sharlaan
Posté le 01-01-2005 à 16:31:17  profilanswer
 

arf :/
et t'as une idée pour le faire de maniere propre ?


---------------
"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
n°934889
couak
Posté le 01-01-2005 à 16:52:46  profilanswer
 

je comprend pas vraiment ce que tu essaies de faire, pour moi interpréter un bloc de texte en perl on utilises eval()

n°934897
sharlaan
Posté le 01-01-2005 à 17:26:23  profilanswer
 

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.


---------------
"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
mood
Publicité
Posté le 01-01-2005 à 17:26:23  profilanswer
 

n°934900
sharlaan
Posté le 01-01-2005 à 17:31:13  profilanswer
 

je devais etre très fatigué quand j'avais testé eval ...
 
je viens de le refaire, et ca marche


---------------
"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
n°934903
ouned-codi​ng
Posté le 01-01-2005 à 17:41:59  profilanswer
 

if ($^O eq 'linux') || die 'Commande non supporté sur cet os';
$pid = open(HANDLE, "/usr/bin/uptime |" );
while() { print; }
close(HANDLE);
 

Citation :

NAME
 Sys::Uptime - Info on CPU load, uptime, users and number of CPU's installed.
 
SYNOPSIS
 use Sys::Uptime;
 
 my $users  = Sys::Uptime->users;
 my @load   = Sys::Uptime->loadavg;
 my $uptime = Sys::Uptime->uptime;
 my $nbrcpu = Sys::Uptime->nbrcpu;
 
 print "Users logged on: $users\n";
 print "CPU load (1min, 5min, 15min): @load\n";
 print "System uptime: $uptime seconds\n";
 print "Number of CPU's installed: $nbrcpu\n";
 
DESCRIPTION
 A quick and dirty module that returns CPU load, uptime, users and number of CPU's installed.
 Currently only tested on Linux.
 
COPYRIGHT
 
 Copyright (c) 2004 Wim De Hul.
 All rights reserved.
 This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.  
 
 
ADRESSE: http://cpan.cict.fr/modules/by-cat [...] .01.readme


Message édité par ouned-coding le 01-01-2005 à 17:47:06
n°934906
sharlaan
Posté le 01-01-2005 à 17:50:32  profilanswer
 

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 ?


---------------
"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
n°935095
burgergold
5$? va chez l'diable!
Posté le 02-01-2005 à 04:03:07  profilanswer
 

\n c'est un retour de ligne
 
alors un petit
$foo =~ s/\n//;

n°935096
matafan
Posté le 02-01-2005 à 05:46:08  profilanswer
 

chomp() fait ça mieux qu'un s///.

n°935238
burgergold
5$? va chez l'diable!
Posté le 02-01-2005 à 16:44:14  profilanswer
 

matafan a écrit :

chomp() fait ça mieux qu'un s///.


 
j'ai jamais très apprécié les chomp :/
question de philosophie faut croire

n°935368
sharlaan
Posté le 02-01-2005 à 21:44:31  profilanswer
 

finalement j'ai fait une regex qui me vire le "1\n" à la fin de chaque chaine :)


---------------
"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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Executer le contenu d'une variable

 

Sujets relatifs
VBS- Executer et tester la presence d'un programmeContenu PHP / Design CSS
[PHP]Récuperation d'une boucle en variableUn petit conseil concernant la valeur d'une variable
executer un scrpt en fonction de l'ip de l'user[Perl] Parseur d'options
supprimer une variable d'une variable, est-ce possible ?Comparer contenu cellule excell et string
recuperer une variable public d un autre packageVariable .............. variabilisée ;-)
Plus de sujets relatifs à : [Perl] Executer le contenu d'une variable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR