I'm looking for suggestions on how to beautify/clean_up my subroutine argument references. Here is the situation:
I have many options to my application, all of which are stored in an object attributes structure. Typical Getopt::Long elements looks like this:
my $opts = GetOptions (
"input|source|i:s" => sub { if($_[1]) {
$new->source($_[1]);
}else{
$new->source($last->source);
} },
"verbose" => sub { $new->verbose($_[1]); },
# and so on
What I find ugly is the use of $_[1] to reference the value that GetOptions parses for each option. $_[0] is the option name. $_[1,2] are used for values or references to hashes and lists.
I suppose I could just pass the whole list to the object method, but that gets ugly since most of these methods are designed to store/retrieve attributes and defined by an AUTOLOAD subroutine down in the class i.e. package.
Updated to reflect proper variable prefix for list refs. thanks to
davido for waking me up about my syntax. -ben
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: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.