I recently rolled my own Class::DBI-ish module, which creates objects from DB tables. It provides a search() method to its subclasses to find these objects. I've found the most intuitive way to write calls to this method is using named parameters:
my @people = People->search( position=>'manager', last_name=>'Smith' ) +;
as opposed to
my @people = People->search('position', 'manager', 'last_name', 'Smith +'); # or my @people = People->search({ position=>'manager', last_name=>'Smith' +});

I like the first way for a few reasons: first, when using a hash as opposed to an array, the relationship between the pairs of parameters is very clear. Clearly position and 'manager' are related items in this method call. This is less clear in the array version. Also, I like being able to have barewords with the hash version -- less quotes I have to type. And no curly braces like in the hashref 3rd version.

This method makes more logical sense to me, and is easiest to type. However, I would probably use a hashref if the named parameters were combined with unnamed parameters, such as:

$x->text('hello world', { font=>'arial', size=>'12px' });

... just so I could visually separate the "important" data from the less-important formatting arguments.

All in all, it's probably more important to stive for consistency than which specific style you choose. Having said that, most of the methods I encounter are not good candidates for named parameters, as in the above substr() example by sauoq


In reply to Re: What's your favorite method of passing parameters into a sub? by blokhead
in thread What's your favorite method of passing parameters into a sub? by jk2addict

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.