Ah, see, now that's a slightly different question now. You need all the possible functions being passed in to have the same signature, which means that you can't just pass in references to push, unshift and splice - since splice has a different signature than push and unshift.

Since you need to come up with a common signature anyway, then using closures is probably the easiest way:

sub do_stuff { my $determine_what_to_do = shift; foreach (@some_other_list) { my $func = $determine_what_to_do->($_); $func->($_) if $func; } }
And then you can have a determination function that does the lookup on what to do with each line - if source filters were reliable, Switch probably would be good here. The perl6 match operators will probably be even better. Here you can return a closure that only takes the item to be pushed, unshifted, spliced, whatever, and closes on the rest of the parameters (which array to push, etc.).

Or, your call to the function could be:

$func->(\@array, $_);
if the same array is always used anyway. Again, though, the splice function needs more parameters, which will need to be closed on somehow.


In reply to Re^3: Making references to built-in functions by Tanktalus
in thread Making references to built-in functions by habit_forming

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.