Perl Getopt::Long
permet à un développeur d'ajouter leurs propres options à un script. Il est également possible d'autoriser plusieurs valeurs pour une option par le use of a repeat specifier, comme dans les expressions régulières. Par exemple:Ajouter Getopt :: Long options dans un hachage, même en utilisant un spécificateur de répétition
GetOptions('coordinates=f{2}' => \@coor, 'rgbcolor=i{3}' => \@color);
De plus, option values can be stored in a hash, comme ceci:
my %h =();
GetOptions(\%h, 'length=i'); # will store in $h{length}
Ce que je suis en train de faire est, combiner ces deux méthodes pour se retrouver avec un hachage de mes options, même quand ils avoir plusieurs valeurs. Par exemple, disons que je veux autoriser trois options: anniversaire (trois nombres entiers), parents (une ou deux chaînes), prénom (exactement une chaîne). Disons aussi que je veux mettre ces valeurs dans un hachage. J'ai essayé les éléments suivants:
use strict;
use warnings;
use Getopt::Long;
use Data::Dumper;
my %h =();
GetOptions(\%h, 'bday=i{3}', 'parents=s{1,2}', 'name=s{1}');
print Dumper(\%h);
Et testé, mais la sortie est la suivante:
perl optstest.pl --bday 22 3 1986 --parents john mary --name ellen
$VAR1 = {
'name' => 'ellen',
'parents' => 'mary',
'bday' => 1986
};
Seule la dernière valeur de chaque option est effectivement utilisée dans le hachage. Ce que je voudrais, cependant, est:
$VAR1 = {
'name' => 'ellen',
'parents' => ['mary', 'john'],
'bday' => [22, 3, 1986]
};
Si « ellen » serait dans un tableau, ou si tout était à l'intérieur d'un hachage, ce serait bien aussi.
N'est-il pas possible de combiner ces deux fonctionnalités de Getopt::Long
, c'est-à-dire de placer des options dans un hachage et d'utiliser des spécificateurs de répétition?
Je voulais 'bday' en tant que tableau, mais en effet. J'ai besoin de la notation '@ {}'. Merci! –