For Programmers: Free Programming Magazines  


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]

 

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


Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com