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

kepon -  
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
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

jipicy Messages postés 41342 Statut Modérateur 4 896
 
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
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
kepon
 
merci j'ai aussi trouvé mon bonheur avec la fonction : Getopt::Long.
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Happy for you ;-))

Mais alors faut lui dire merci aussi à "lami20j" dans ton autre post :
http://www.commentcamarche.net/forum/affich-2086548#1
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
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