package ITAGetopt;
use strict;
use warnings;
use Moose;
has 'cl' => (is => 'rw', isa => 'Str');
extends 'Getopt::Long';
sub new {
my $class = shift;
my $obj = $class->Getopt::Long::Parser::new(@_);
return $class->meta->new_object(
__INSTANCE__ => $obj, @_,
);
}
#sub GetOptions {
# my ($self) = shift;
# $self->SUPER::GetOptions(@_);
# ...
#
# won't do it that way, not because it is diffcult but after is easier
before 'GetOptions' => sub {
print "here I am before ...\n";
print "@ARGV \n";
};
after 'GetOptions' => sub {
my $self = shift;
print "here I am after ...\n";
print "@ARGV \n";
$self->cl($ARGV[0]);
};
1;
## gopt.pl
use strict;
use warnings;
use ITAGetopt;
use Data::Dumper;
# $opt{opt} = $ARGV[0] if (! $opt{opt} && $ARGV[0]);
# $opt{command_line} = $ARGV[0] if $ARGV[0];
#my $opt = ITAGetopt::ITAGetOption(
# 'o|opt:s' => 'opt',
# 'b|bsp=i' => 'bsp',
#);
my %opt;
my $getopt = ITAGetopt->new();
my $ref = $getopt->GetOptions(
'o|opt:s' => \$opt{opt},
'b|bsp=i' => \$opt{bsp},
);
printf "command line %s\n", $getopt->cl;