Comment gérer l'option principale avec Getopt
Question
Je veux gérer une caractéristique qui me semble presque naturel avec des programmes, et je ne sais pas comment le gérer avec le paquet de Getopt (peu importe Std ot Long).
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
est Getopt capable de faire cela, ou dois-je manipuler à la main?
La solution
On dirait que vous parlez non-options - arguments de ligne de commande de base. Ils sont accessibles avec @ARGV
. Les modules de Getopt
passeront des 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 main_args=@main_args\n";
Autres conseils
Si vous voulez avoir écrit sans -
, et il est pas non plus en option (comme vous spécifions), puis par un raisonnement, il est pas du tout, mais un argument . Il vous suffit de vous lire via
my $mainarg = shift
et puis laissez Getopt faire sa chose. (Vous pouvez vérifier $#ARGV
après pour vérifier que l'argument principal a été effectivement donné.)