Perl] ../script --opt=val comment récupérer?

kepon -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjours j'ai un petit problème assé urgent...

je débute totalement en PERL ... et sous linux je voudrai lancer un script (commande ./script) mais je voudrai définir des option, des valeur, des variable ... (je c'est pa tro comment appeler cela...)

exemple :

./script --option=valeur1

Dans mon scipt perl avoir la valeur1 dans une variable....

Merci de vos réponse rapide... david

4 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Tiens jette un oeil là : http://articles.mongueurs.net/magazines/linuxmag49.html

    Si j'ai bien tout compris sur ce que tu veux, ça devrait donner un truc du genre :
    [jp@Mandrake tmpfs]$ cat script_perl.pl
    
    #! /usr/bin/perl -s
    
    $a = $ARGV[0];
    $b = $ARGV[1];
    $c = $ARGV[2];
    
    print "Les paramètres passés au script sont : @ARGV\n\n";
    print "La variable a = $a\n";
    print "La variable b = $b\n";
    print "La variable c = $c\n";
    
    [jp@Mandrake tmpfs]$ ./script_perl.pl maman papa "et moi"
    
    Les paramètres passés au script sont : maman papa et moi
    
    La variable a = maman
    La variable b = papa
    La variable c = et moi
    
    [jp@Mandrake tmpfs]$
    C'est ce que tu voulais ?
    1
  2. hssissen Messages postés 844 Date d'inscription   Statut Membre Dernière intervention   50
     
    Salut,
    Je ne sais pas si tu veux parler d'arguments de ta commande (ton script), l'idéal c'est que tu nous envoie ton script pour voir plus clair!

    @+
    0
  3. kepon
     
    merci j'ai aussi trouvé mon bonheur avec la fonction : Getopt::Long.
    0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Bonsoir,

    Merci jipicy.

    kepon il ne faut pas confondre une fonction avec un module.
    la fonction : Getopt::Long.

    En ce cas il s'agit d'un module pas une fonction.

    Getopt::Long veut dire que dans le répertoire Getopt tu as le module perl Long.pm

    Quand tu appelles un module avec
    use Getopt::Long

    perl cherche dans le tableau @INC pour voir s'il trouve le chemin vers ce répertoire.
    [lamitest@localhost ~]$ perl -e '$"="\n";print "@INC\n";'
    /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.4/i386-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.6
    /usr/lib/perl5/site_perl/5.8.5
    /usr/lib/perl5/site_perl/5.8.4
    /usr/lib/perl5/site_perl/5.8.3
    /usr/lib/perl5/site_perl
    /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi
    /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi
    /usr/lib/perl5/vendor_perl/5.8.4/i386-linux-thread-multi
    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi
    /usr/lib/perl5/vendor_perl/5.8.6
    /usr/lib/perl5/vendor_perl/5.8.5
    /usr/lib/perl5/vendor_perl/5.8.4
    /usr/lib/perl5/vendor_perl/5.8.3
    /usr/lib/perl5/vendor_perl
    /usr/lib/perl5/5.8.6/i386-linux-thread-multi
    /usr/lib/perl5/5.8.6
    .
    [lamitest@localhost ~]$ find /usr/lib/perl5/ -name 'Getopt'
    /usr/lib/perl5/5.8.6/Getopt
    [lamitest@localhost ~]$ ls -l /usr/lib/perl5/5.8.6/Getopt/
    total 96
    drwxr-xr-x  2 root root  4096 déc 20 23:41 Long
    -rw-r--r--  1 root root 69870 déc 14 20:22 Long.pm
    -rw-r--r--  1 root root  8298 déc 14 20:22 Std.pm
    [lamitest@localhost ~]$
    

    0