Rechercher : dans
Par :

[perl] enregistrer commande dans variable

Dernière réponse le 29 jui 2008 à 19:07:27 tisba972, le 29 jui 2008 à 17:52:08 
 Signaler ce message aux modérateurs

Bonjour,

je voudrais enregistrer le resultat d'une commande unix dans une variable de mon script perl

je fais :

my $domain;
system "dnsdomainname";

et je voudrais enreggistrer le resultat de cette commande dans $domain .

comment faire?

Configuration: Linux Red Hat
SeaMonkey 1.0.1

Meilleures réponses pour « [perl] enregistrer commande dans variable » dans :
Comment récupérer le résultat d'une commande dans une variable VoirComment récupérer le résultat d'une commande dans une variable Préambule Syntaxe Exemples Préambule Il est bien souvent nécessaire de récupérer le résultat d'une commande (ou de son code retour) dans une variable afin de pouvoir...
[Bash] La variable d'environnement PATH VoirLa variable d'environnement PATH I. Préambule II. C'est quoi le shell ? III. Définition IV. Séance de dissection V. Ajouter un répertoire à la variable PATH VI. Et puis... I. Préambule Sous les systèmes GNU/Linux qu'on le veuille ou...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Les variables avec Perl VoirConcept de variable avec Perl Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage Perl peuvent être de trois...
Linux - L'éditeur Vi VoirIntroduction à Vi Vi est un des éditeurs de texte les plus populaires sous les systèmes de type Unix (avec Emacs et pico) malgré son ergonomie très limitée. Sous Linux il existe une version libre de Vi appelée Vim (Vi Improved). Vi (prononcez...
Perl - Les fichiers VoirLa notion de filehandle On appelle filehandle (traduisez descripteur de fichier), dans un programme Perl, le nom permettant de manipuler une connexion d'entrée-sortie (les entrées-sorties standards vues précédemment sont connues par les filehandles...

1

lami20j, le 29 jui 2008 à 18:09:43

Salut,

tu dois utiliser qx// ou les apostrophes inverses pour récupérer le résultat d'une commande

Voici un exemple dans lequel je récupère en premier le résultat de la commande hostname et ensuite celle de la commande ls -l *.pl

lami20j@debian:~/trash$ hostname
debian
lami20j@debian:~/trash$ ls -l *.pl
-rw-r--r-- 1 lami20j lami20j  533 2008-04-10 00:04 bramble.pl
-rwxr-xr-x 1 lami20j lami20j  582 2008-01-08 21:14 ccm2.pl
-rw-r--r-- 1 lami20j lami20j  224 2008-02-01 06:43 ccm3.pl
-rwxr-xr-x 1 lami20j lami20j  177 2008-07-29 18:07 ccm.pl
-rw-r--r-- 1 lami20j lami20j  724 2008-05-20 21:33 clemail.pl
-rw-r--r-- 1 lami20j lami20j  573 2008-04-22 11:13 compfic2.pl
-rw-r--r-- 1 lami20j lami20j  434 2008-04-13 00:25 compfic.pl
-rw-r--r-- 1 lami20j lami20j  456 2008-04-12 12:52 comp.pl
-rw-r--r-- 1 lami20j lami20j  716 2008-03-10 20:15 cyg2.pl
-rw-r--r-- 1 lami20j lami20j  170 2007-12-03 23:03 date.pl
-rw-r--r-- 1 lami20j lami20j  228 2008-04-29 19:25 emilie.pl
-rw-r--r-- 1 lami20j lami20j  156 2008-06-14 10:43 epoch2time.pl
-rw-r--r-- 1 lami20j lami20j  279 2007-12-03 20:40 everdraft.pl
-rw-r--r-- 1 lami20j lami20j  890 2008-01-01 12:20 exxan_mailing.pl
-rw-r--r-- 1 lami20j lami20j  595 2008-03-12 20:16 ficatore2.pl
-rw-r--r-- 1 lami20j lami20j  506 2008-03-11 19:57 ficatore.pl
-rw-r--r-- 1 lami20j lami20j  130 2008-05-28 22:57 f_pignon.pl
-rw-r--r-- 1 lami20j lami20j  720 2008-03-22 08:34 graph.pl
-rw-r--r-- 1 lami20j lami20j  757 2008-01-09 07:39 l_histoire_de_l_archiduc_albert.pl
-rw-r--r-- 1 lami20j lami20j  253 2007-11-16 22:40 max.pl
-rw-r--r-- 1 lami20j lami20j  252 2007-11-16 22:35 moyenne.pl
-rw-r--r-- 1 lami20j lami20j  528 2008-06-11 20:16 mrt.pl
-rw-r--r-- 1 lami20j lami20j   98 2008-02-03 11:58 ntp.pl
-rw-r--r-- 1 lami20j lami20j  741 2007-10-10 22:34 send_mail_mimelite-1.pl
-rw-r--r-- 1 lami20j lami20j 1936 2007-12-30 22:22 send_mail_mimelite.html.img.final.pl
-rw-r--r-- 1 lami20j lami20j 1126 2007-12-16 17:30 send_mail_mimelite.html.pl
-rw-r--r-- 1 lami20j lami20j 1639 2007-12-16 17:41 send_mail_mimelite.img.pl
-rw-r--r-- 1 lami20j lami20j  626 2007-12-03 20:22 send_mail_mimelite.pl
-rw-r--r-- 1 lami20j lami20j  806 2008-03-23 13:57 smart_girl.pl
-rw-r--r-- 1 lami20j lami20j  928 2008-01-14 20:09 specimen.pl
-rw-r--r-- 1 lami20j lami20j  627 2008-07-19 08:49 strlen.pl
-rw-r--r-- 1 lami20j lami20j  562 2008-07-21 20:11 tableau.pl
-rw-r--r-- 1 lami20j lami20j  170 2007-10-01 19:48 test.pl
-rw-r--r-- 1 lami20j lami20j  269 2008-05-17 15:17 texte.pl
-rw-r--r-- 1 lami20j lami20j  965 2008-04-24 14:37 time2epoch.pl
-rw-r--r-- 1 lami20j lami20j  363 2008-07-21 22:46 tk.pl
-rw-r--r-- 1 lami20j lami20j   34 2008-04-12 00:07 vvv.pl
-rw-r--r-- 1 lami20j lami20j  423 2008-07-24 21:36 wafa_o.pl
lami20j@debian:~/trash$ cat ccm.pl
#!/usr/bin/perl
#
use warnings;use strict;

my $hostname = qx/hostname/;
printf "\$hostname = $hostname";
my $ls = `ls -l *.pl`;
printf "-" x 10;
print "\n\$ls = $ls";

__END__
lami20j@debian:~/trash$ perl ccm.pl
$hostname = debian
----------
$ls = -rw-r--r-- 1 lami20j lami20j  533 2008-04-10 00:04 bramble.pl
-rwxr-xr-x 1 lami20j lami20j  582 2008-01-08 21:14 ccm2.pl
-rw-r--r-- 1 lami20j lami20j  224 2008-02-01 06:43 ccm3.pl
-rwxr-xr-x 1 lami20j lami20j  177 2008-07-29 18:07 ccm.pl
-rw-r--r-- 1 lami20j lami20j  724 2008-05-20 21:33 clemail.pl
-rw-r--r-- 1 lami20j lami20j  573 2008-04-22 11:13 compfic2.pl
-rw-r--r-- 1 lami20j lami20j  434 2008-04-13 00:25 compfic.pl
-rw-r--r-- 1 lami20j lami20j  456 2008-04-12 12:52 comp.pl
-rw-r--r-- 1 lami20j lami20j  716 2008-03-10 20:15 cyg2.pl
-rw-r--r-- 1 lami20j lami20j  170 2007-12-03 23:03 date.pl
-rw-r--r-- 1 lami20j lami20j  228 2008-04-29 19:25 emilie.pl
-rw-r--r-- 1 lami20j lami20j  156 2008-06-14 10:43 epoch2time.pl
-rw-r--r-- 1 lami20j lami20j  279 2007-12-03 20:40 everdraft.pl
-rw-r--r-- 1 lami20j lami20j  890 2008-01-01 12:20 exxan_mailing.pl
-rw-r--r-- 1 lami20j lami20j  595 2008-03-12 20:16 ficatore2.pl
-rw-r--r-- 1 lami20j lami20j  506 2008-03-11 19:57 ficatore.pl
-rw-r--r-- 1 lami20j lami20j  130 2008-05-28 22:57 f_pignon.pl
-rw-r--r-- 1 lami20j lami20j  720 2008-03-22 08:34 graph.pl
-rw-r--r-- 1 lami20j lami20j  757 2008-01-09 07:39 l_histoire_de_l_archiduc_albert.pl
-rw-r--r-- 1 lami20j lami20j  253 2007-11-16 22:40 max.pl
-rw-r--r-- 1 lami20j lami20j  252 2007-11-16 22:35 moyenne.pl
-rw-r--r-- 1 lami20j lami20j  528 2008-06-11 20:16 mrt.pl
-rw-r--r-- 1 lami20j lami20j   98 2008-02-03 11:58 ntp.pl
-rw-r--r-- 1 lami20j lami20j  741 2007-10-10 22:34 send_mail_mimelite-1.pl
-rw-r--r-- 1 lami20j lami20j 1936 2007-12-30 22:22 send_mail_mimelite.html.img.final.pl
-rw-r--r-- 1 lami20j lami20j 1126 2007-12-16 17:30 send_mail_mimelite.html.pl
-rw-r--r-- 1 lami20j lami20j 1639 2007-12-16 17:41 send_mail_mimelite.img.pl
-rw-r--r-- 1 lami20j lami20j  626 2007-12-03 20:22 send_mail_mimelite.pl
-rw-r--r-- 1 lami20j lami20j  806 2008-03-23 13:57 smart_girl.pl
-rw-r--r-- 1 lami20j lami20j  928 2008-01-14 20:09 specimen.pl
-rw-r--r-- 1 lami20j lami20j  627 2008-07-19 08:49 strlen.pl
-rw-r--r-- 1 lami20j lami20j  562 2008-07-21 20:11 tableau.pl
-rw-r--r-- 1 lami20j lami20j  170 2007-10-01 19:48 test.pl
-rw-r--r-- 1 lami20j lami20j  269 2008-05-17 15:17 texte.pl
-rw-r--r-- 1 lami20j lami20j  965 2008-04-24 14:37 time2epoch.pl
-rw-r--r-- 1 lami20j lami20j  363 2008-07-21 22:46 tk.pl
-rw-r--r-- 1 lami20j lami20j   34 2008-04-12 00:07 vvv.pl
-rw-r--r-- 1 lami20j lami20j  423 2008-07-24 21:36 wafa_o.pl
lami20j@debian:~/trash$  

106485010510997108

Répondre à lami20j

2

tisba972, le 29 jui 2008 à 18:19:33

AU POIL ;)

parcontre j'ai encore un soucis , j'espère ne pas te déranger en te demandant encore de l'aide.
j'ai créé la fonction suivante :
le chmap renvoyer par dnsdomainname est : dirag.meteo.fr

sub lieu
{
my $domain;
my @ligne;
my $ile;

$domain = qx/dnsdomainname/;

@ligne = split ".",$domain;
if($ligne[0] eq "dirag")
{
$ile = "MARTINIQUE"
}
print $ile;
}

et cette fonction ne fonctionne pas.
D'ou peux venir le soucis ?
merci

Répondre à tisba972

3

lami20j, le 29 jui 2008 à 18:52:57
  • +2

Re,

essaie comme ça

#!/usr/bin/perl
#
use warnings;use strict;

sub lieu{
  $domain = qx/dnsdomainname/;
  if ((split /\./,$domain)[0] eq 'dirag'){
    $ile="Martinique";
  }else{
    $ile="Autre";
  }
  print $ile,"\n";
}

lieu;
__END__
106485010510997108

Répondre à lami20j

4

 tisba972, le 29 jui 2008 à 19:07:27

Merci
maintenant ça passe nickel

:)

Répondre à tisba972