Thanks! That was the syntax that I was missing. Ricky
On Dec 11, 2013, at 2:35 PM, Ben Martin <[email protected]> wrote: > You could always do: > > my $result = $test->(sub {$_}, @$list); > > the prototype is a convenient shortcut, but you can always just be explicit. > > Cheers, > Ben > > > On Wed, Dec 11, 2013 at 2:26 PM, Morse, Richard E.MGH < > [email protected]> wrote: > >> Hi! I'm having difficulty finding a place online which discusses this; if >> anyone has pointers (or an answer) I would appreciate it. >> >> I would like to do something like the following: >> >> use List::MoreUtils qw/any all/; >> my $which = "any"; >> my @list = (1, 0, 1); >> my $subref; >> if ($which eq 'any') { $subref = \&any; } >> elsif ($which eq 'all') { $subref = \&all; } >> >> my $result = $subref { $_ } @list; >> >> The problem I have is how to call the referenced subroutine. Because >> 'any' and 'all' use prototypes to get a block as the first parameter, when >> called via the reference, it tries to create an anonymous hash. I've tried >> several different things: >> >> my $result = $subref->({ $_ }, @list); >> my $result = &{$subref} { $_ }, @list; >> my $result = $subref {; $_ }, @list; >> >> and many variations thereof, but nothing seems to work. I get all sorts of >> ugly syntax errors. >> >> My eventual goal is to have something like: >> >> my $lookup = { >> 'any' => \&any, >> 'all' => \&all, >> 'none' => \&none, >> 'notall' => \¬all, >> } >> >> if ( &{$lookup->{$test}} {$_} @$list ); >> >> Otherwise, I have to have an if-then-else (or given/when) structure, and a >> temporary variable, which is annoying... >> >> Thanks, >> Ricky >> >> >> The information in this e-mail is intended only for the person to whom it >> is >> addressed. If you believe this e-mail was sent to you in error and the >> e-mail >> contains patient information, please contact the Partners Compliance >> HelpLine at >> http://www.partners.org/complianceline . If the e-mail was sent to you in >> error >> but does not contain patient information, please contact the sender and >> properly >> dispose of the e-mail. >> >> >> _______________________________________________ >> Boston-pm mailing list >> [email protected] >> http://mail.pm.org/mailman/listinfo/boston-pm >> >> _______________________________________________ Boston-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/boston-pm

