2010-06-03 2 views
2

Je veux gérer une fonctionnalité qui me semble presque naturelle avec les programmes, et je ne sais pas comment la gérer avec le paquetage Getopt perl (peu importe Std ot Long).Comment gérer l'option principale avec Getopt

Je voudrais quelque chose comme:

./perlscript <main option> [some options like -h or --output-file some_name] 

options seront traitées avec - ou -, mais je veux être en mesure de permettre à l'utilisateur me donner l'option principale et nécessaire sans tirets.

Getopt est-il capable de le faire, ou dois-je le manipuler à la main?

Répondre

8

Il semble que vous parlez de non-options - arguments de ligne de commande de base. Ils peuvent être consultés avec @ARGV. Les Getopt modules passeront arguments réguliers jusqu'à votre script sans encombre:

use strict; 
use warnings; 
use Getopt::Long; 

GetOptions (
    'foo' => \my $foo, 
    'bar=s' => \my $bar, 
); 

my @main_args = @ARGV; 

# For example: perl script.pl --foo --bar XXX 1 2 3 
# Produces: foo=1 bar=XXX main_args=1 2 3 
print "foo=$foo bar=$bar [email protected]_args\n"; 
3

Si vous voulez avoir écrit sans -, et il est pas non plus en option (comme vous spécifions), puis par un raisonnement n'est pas une option du tout, mais un argument. Vous devez simplement lire vous-même via

my $mainarg = shift 

puis laissez Getopt faire son travail. (Vous voudrez peut-être vérifier par la suite $#ARGV pour vérifier que l'argument principal a bien été donné.)

+0

C'était ce que je voulais dire par le manipuler à la main. –

Questions connexes