> i know this should be a simple step or two that i'm missing, and i > haven't been able to figure it out from reading yet... > > i have the following code: > > $sth = $mysql_dbh->prepare("select subroutine_pointer from > $database.equipment_manufacturer where > manufacturer=\"$remedy_eqpt_mfgr\""); > $sth->execute(); > $subroutine_pointer = $sth->fetchrow_array(); > no strict "refs"; > &$subroutine_pointer() unless $subroutine_pointer eq ""; > use strict "refs"; > > this pulls a phrase from the database that matches a subroutine name > that i want to call based on certain other criteria, then displays that > sub's output to a web page. this works fine as is but i want to learn > how to restructure this so i don't have to use "no strict" and "use > strict" around the call. all suggestions welcome *s* >
One way, I won't guarantee the best, would be to store a mapping of subroutine references into a hash, where the hash key replaces the subroutine name, then you would index into the hash using the value from the db to access the reference of the sub to call. %subs = ( 'db_value1' => sub { print "Called sub 1"; }, 'db_value2' => sub { print "Called sub 2"; }, ); $subs{$subroutine_pointer}->(); Where $subroutine_pointer is the string 'db_value1', etc. http://danconia.org -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>