{ package Server; use Carp; use Moose; use Net::OpenSSH; use Config::Simple; with 'MyOpenSSH'; has 'ssh' => (is => 'ro', isa => 'Net::OpenSSH', required => 1, handles => qr/.*/, ); } { package MyOpenSSH; use Moose::Role; sub grab { my $self = shift; $self->_check_command(@_); my $result = $self->ssh->capture(@_); return $result if ($? == 0 && !$self->ssh->error); } } use Server; my $server = Server->new(ssh => Net::OpenSSH->new('me@10.0.1.22')); print $server->grab('ls');