Choosing between AUTOLOAD vs Delegation

We are using OOP perl as a programming languge to design this framework, so this algo-like code is in Perl.

We are developing an automation framework in OOP Perl for an end-point device. This end-point device provides a HTTP, Telnet and SSH interface to execute the certain set of commands. For simplicity, we can assume that all commands are supported by all the three connection interfaces, generating the same output for a given command.

A function is written in the respective Connection class to handle a specific command. e.g.

sub getVersion { return $http->sendCommand('version'); }

But the current implementation of calling such function is little but different. Suppose, we would like to call the getVersion function, then it will be called something like this.

$device->getVersion(); //This is called through device object rath +er than connection object.

since this function is not defined in the device class, AUTOLOAD is called. In the Device class, AUTOLOAD is implemented like this

sub AUTOLOAD { my $connection = $device->getConnection(); return $connection->$methodName (..); // when called for getVers +ion, $methodName will become the "getVersion" }

Later, through some other forum, I identified about the class Class::Delegator. If I use Class::Delegator then we need to write the hash for each and every sub which will be deligating. I have 150+ such functions which all will be deligated to a single attribute.

Please help me to identify whether I should stick with AUTOLOAD or should I move to Class::Delegator class.


In reply to Choosing between AUTOLOAD vs Delegation by Anonymous Monk

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.