Robert Zielfelder wrote:
>
> I have a bunch of subroutines defined in the script, but they don't need
> to
> be invoked unless the "@list_of_subs" contains the name of the sub. I
> know that I could stick a bunch of if statements in there and make this
> work, but
> I am trying to be a little more efficient if I can. Any insight would be
> appreciated.
>
if the order of executing your subroutine is NOT important, use a hash:
#!/usr/bin/perl -w
use strict;
my %hash = ( sub1 => [\&sub1,1,2], sub2 => [\&sub2,3,4] );
while(my($name,$sub) = each %hash){
my @subs = @{$sub};
print "calling $name: ",$subs[0]->(@subs[1..$#subs]);
}
sub sub1{
print "GETTING: @_\n";
}
sub sub2{
print "GETTING: @_\n";
}
__END__
if the ordere of executing your subroutine is important, use an array:
#!/usr/bin/perl -w
use strict;
my @array = ( [\&sub1,1,2], [\&sub2,3,4] );
for(my $i = 0; $i < @array; $i++){
my @subs = @{$array[$i]};
$subs[0]->(@subs[1..$#subs]);
}
sub sub1{
print "GETTING: @_\n";
}
sub sub2{
print "GETTING: @_\n";
}
__END__
hope that help
david
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]