[bcn-pm] Getopt::Long i funcions per una mateixa opció

Arnau Bria listsarnau a gmail.com
dll feb 6 07:58:17 PST 2012


On Mon, 6 Feb 2012 16:44:25 +0100
Alex Muntada wrote:

[...]
> Aquí estàs cridant directament les funcions i el que
> t'interessa és la referència a cadascuna d'elles:
> 
> my %opy = (
>     list => {
>         postinstall => \&list_postinstall,
>         distros => \&list_distros,
>     },
> );
mira que aho havia provat, però sense escapar el & .

> > i ho acabo cridant com:
> > GetOptions ('list=s' => sub {$opt{$_[0]}->($_[1])->($_[2])});
> 
> Fixa't que no estàs accedint al 2 nivells del hash correctament,
> en tot cas seria això altre, indicant explícitament que list espera
> un comportament de hash:
> 
> GetOptions( 'list=s%' => sub { $opt{ $_[0] }{ $_[1] }->( $_[2] ) } );
> 
> Però tingues clar que això només funciona per a les opcions
> que tenen aspecte de hash, e.g.:
> 
>     $ foobar.pl --list distros=debian
> 
> Amb això accedeixes al hash $opt{'list'}{'distros'}, obtens la
> referència a la funció i la crides amb el paràmetre 'debian'.
> L'exemple sencer: https://gist.github.com/1752738

Val, ara entenc algun que altre exemple que he vist :-) 
que fàcil smebla així explicat i lo que m'ha costat entendre-ho jo
solet....

en fi, recurrirem a les opcions simples, tipus --postinstalls,
--distros, etc...


> Salut!
Moltíssimes gràcies per la teva ajuda! 

Arnau


Més informació sobre la llista de correu Barcelona-pm