[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