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;