in reply to Creating operators in the flavor of map & grep...

The prototype should be partition(&\@) and the array will be passed by ref so it should be my ($coderef,$arrarref) = @_;

-Lee

"To be civilized is to deny one's nature."
  • Comment on Re: Creating operators in the flavor of map & grep...

Replies are listed 'Best First'.
Re: Re: Creating operators in the flavor of map & grep...
by flounder99 (Friar) on Sep 05, 2002 at 11:58 UTC
    I would recommend using (&@) as a prototype. That way you can use a list for other arguments. If you use ($\@) your second argument must be an array.
    use strict; use Data::Dumper; sub takes_coderef (&@); takes_coderef {print "I'm a code ref called with (", join(", ", @_), " +)\n"} "first", 2, 3; sub takes_coderef (&@) { my $coderef = shift; my @otherargs = @_; &$coderef(@otherargs); print Data::Dumper->Dump([\@otherargs], ["*otherargs"]); } ___OUTPUT___ I'm a code ref called with (first, 2, 3) @otherargs = ( 'first', 2, 3 );
    See this thread about prototypes and especially Tom Christiansen's Prototypes in Perl for a very in-depth discussion of prototypes.

    --

    flounder

      For most purposes your probably right. Myself, I've mainly written map|grep like functions for lazy iteration so I've needed the reference to the data.

      -Lee

      "To be civilized is to deny one's nature."