> 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>


Reply via email to