[bcn-pm] Getopt::Long i funcions per una mateixa opció
Arnau Bria
listsarnau a gmail.com
dim feb 7 07:55:56 PST 2012
On Tue, 7 Feb 2012 11:51:13 +0100
Alex Muntada wrote:
> No home, no. Al contrari del que pensa alguna gent, els Perl
> Mongers acostumem a ser gent molt sociable i disposada a
> ajudar, sigui quin sigui el nivell de coneixements de Perl.
s'agraeix!
> > Només per l'orgull, i l'ajuda que mas donat, ho acabaré posant
> > amb el --list!
>
> Molt bé, justament això pretenia ;-)
A veure... no se com he acabat a
http://mailman.anu.edu.au/pipermail/perl.sig/2005-March/000001.html i
he entès perquè al printar el HASH em sortia un DUMMY on estaven les
funcions...i de pas una nova explicaicó al tema referència a funcions
(al ara ja ho tinc clar, crec).
I, gràcies al teu exemple, he aconseguit exactament el que volia. Ho
tenia davant del nas i no ho veia!
$ perl options.pl --help
Nop
$ perl options.pl --list test1
Això funciona 1
$ perl options.pl --list test2
Això funciona 2
#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long;
my %opt = ( 'list' => {
'test1' => \&test,
'test2' => \&test2,
}
);
GetOptions( 'list=s' => sub { $opt{$_[0]}{$_[1]}->(); },
'help|?' => sub { print "Nop\n"; } );
sub test {
print "Això funciona 1\n";
}
sub test2 {
print "Això funciona 2\n";
}
__END__
només em queda el cas de que li passi un valor que no existeix:
# perl options.pl --list test3
Use of uninitialized value in subroutine entry at options.pl line 12.
Can't use string ("") as a subroutine ref while "strict refs" in use at options.pl line 12.
Però per ara etic força content!! :-)
Moltes gràcies!
Arnau
Més informació sobre la llista de correu Barcelona-pm