I’m trying to figure out how to iterate over an array of subroutine refs.
What’s wrong with this syntax?
use strict; use warnings; sub yell { print 'Ahh!\n'; } sub kick { print 'Boot!\n'; } sub scream { print 'Eeek!\n'; } my @routines = (\&yell, \&kick, \&scream); foreach my $routine_ref (@routines) { my &routine = &{$routine_ref}; &routine; }
Thanks in advance!
In your
foreachloop, the following is a syntax error:Your variable
$routine_refalready has a reference to the subroutine, so all you need to do at that point is call it:As always with Perl, ‘There’s More Than One Way to Do It.’ For example, if any of those subroutines took parameters, you could pass them inside parenthesis like this:
Also note that I’ve used
forinstead offoreach, which is a best pratice put forth by Damian Conway in Perl Best Practices.