Home > Archive > PERL Beginners > March 2004 > references
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
|
|
| Joe Mecklin 2004-03-26, 11:14 pm |
| 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*
joe
| |
| Wiggins D Anconia 2004-03-26, 11:14 pm |
|
> 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
| |
| Joe Mecklin 2004-03-26, 11:14 pm |
| On Wed, 2004-03-24 at 15:08, Wiggins d Anconia wrote:
>
> 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
thanks for the ideas. i played with them some but couldn't get anything
to work. right now time is an issue so i'll just leave things as they
are but will come back to these ideas when i have more time. i
appreciate the quick responses. thanks again.
joe
|
|
|
|
|