[root@old]# perl pc --ip=dsfa --device dsfasdf on
Use of uninitialized value $Power::Control::data in concatenation (.) or string at Power/Control.pm line 63.
The globla data is
Use of uninitialized value $Power::Control::data in concatenation (.) or string at Power/Control.pm line 75.
The data from parent is
The device name is dsfasdf
The ip address is dsfa
This is the command on
####
#! /usr/bin/perl
use strict;
use warnings;
use Power::Control;
use lib 'lib';
# ---- EXECUTION ----
Power::Control->run(); # Launch command
####
package Power::Control;
use base qw( CLI::Framework );
use strict;
use warnings;
sub usage_text {
qq{
$0 [--verbose|v]:
OPTIONS:
--verbose -v: be vebose
ARGUMENTS (subcommands):
on: power on the device
off: power off the device
reboot: reboot the device
version: show PDU version
status: show PDU status
sysstat: show PDU sysstatus
}
}
sub option_spec {
[ 'device|d=s' => 'device name' ],
[ 'ip=s' => 'ip address' ],
[ 'user|u=s' => 'user name' ],
[ 'password|p=s' => 'password' ],
[ 'interval|i=s' => 'interval' ],
[ 'brand|b=s' => 'brand' ],
[ 'community|c=s' => 'community' ],
[ 'version|v=s' => 'version' ],
}
sub command_map {
on => 'Power::Control::Command::On',
off => 'Power::Control::Command::Off',
reboot => 'Power::Control::Command::Reboot',
version => 'Power::Control::Command::Version',
status => 'Power::Control::Command::Status',
sysstat => 'Power::Control::Command::Sysstat',
}
sub command_alias {
r => 'reboot',
v => 'version',
st => 'status',
sys => 'sysstat',
}
our $opts;
our $self;
our $data;
sub init {
($self, $opts) = @_;
$data = $opts->{'ip'};
print "\n The device name is $opts->{'device'}\n";
print "\n The ip address is $data\n";
}
print "\n The globla data is $data\n";
1;
# ---- COMMAND: On ----
package Power::Control::Command::On;
use base qw( CLI::Framework::Command );
use strict;
use warnings;
use Power::Control;
use Data::Dumper;
print "\n The data from parent is $data \n";
sub usage_text {
q{
on [--d=: Power on the device
}
}
#sub option_spec {
# [ 'device|d=s@' => 'device name' ],
#}
sub run {
print "\n This is the command on\n";
}
1;