I have a set of modules like this: Net::SSH::Admin, Net::SSH::Admin::AddAccount, Net::SSH::Admin::DelAccount, etc...

The Net::SSH::Admin instatiates a new ssh object (using expect), and connects to serverX. The other modules are pretty obvious. I am wondering, how would I call a subroutine in the Net::SSH::Admin::AddAccount module? This is my current setup, but I assume there is a better way...

# THIS IS MAIN SCRIPT #!/usr/bin/perl use warnings; use strict; use Net::SSH::Admin; my $server=$ARGV[0]; my $ssh = Net::SSH::Admin->new ( host => $server, password => $secret, user => 'myacct', timeout => 60 ); $login = $ssh->connect(); if ($login) $ssh->add_account(username=>"bob"); } # AND THIS IS HOW I AM CALLING THE FUNCTION FROM Net::SSH::Admin package Net::SSH::Admin; use warnings; use strict; use Expect; use Socket; use Carp; use fields qw( host user password port ssh_option raw_pty exp_internal exp_debug ti +meout log_stdout expect ostype prompt ); use Net::SSH::Admin::AddAccount; # I REMOVED sub new, sub connect, etc... sub add_account { my Net::SSH::Admin $self = shift; my %args = @_; my $os = $self->{ostype}; my $sub = $ssh->can("${os}_mod_account"); if ( !$sub ) { print "Don't know how to mod_account for $os\n"; } else { $sub->( $ssh, %args ); } }

In reply to Calling subroutines from nested modules by walkingthecow

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.