2010-07-31 10 views
0

Je voudrais passer un programme perl un ensemble d'arguments et de drapeaux, par ex. Y a-t-il un moyen de convertir rapidement tous ces éléments en une structure standard (hachage) au lieu de l'analyse syntaxique?Comment puis-je convertir des drapeaux/arguments passés à mon programme Perl sans les analyser moi-même?

Merci, Dave

+1

Un tutoriel utile sur PerlMonks sur l'utilisation 'Getopt :: Long' et' Pod :: Usage' pour produire des options + documentation facilement: http://www.perlmonks.org/?node_id=155288 – Telemachus

Répondre

8

Vous devez utiliser Getopt::Long

Exemple:

linux-t77m:/home/vinko # more opt.pl 
use Getopt::Long;  
my $arg1 = 'default_value'; 
GetOptions('flag1' => \$flag1, 'arg1=s' => \$arg1, 'flag2' => \$flag2);  
print "FLAG1: ".$flag1." ARG1: ".$arg1." FLAG2: ".$flag2."\n\n"; 

linux-t77m:/home/vinko # perl opt.pl --flag2 --arg1=stack 
FLAG1: ARG1: stack FLAG2: 1 

linux-t77m:/home/vinko # perl opt.pl --flag1 --flag2 
FLAG1: 1 ARG1: default_value FLAG2: 1 
+1

Vérifiez également out [MooseX :: Getopt] (http://search.cpan.org/perldoc?MooseX::Getopt), qui utilise Getopt :: Long pour convertir les arguments en attributs Moose. :) – Ether

1

GetOptions peut également remplir un hachage comme demandé dans la question.

my %opt; 
GetOptions(\%opt, qw(flag1 arg1=s flag2)) or pod2usage(2);