I have a module I've written, 'Tools.pm'. One of the
function in
Tools.pm will look up an identifier in a table in a database
and return
the value for the identifier. Since the table is rather
short and to
keep from having to access the disk all the time, I have the
function
store the values in a hash on the first invocation:
Code:
my %values; sub table_value($) { my $identifier = shift; if
(not
defined(%values)) { get the values from table and store in
%values } if
(not defined($values{$identifier})) { INSERT (NULL, $value)
INTO table;
$identifier = SELECT Last_Insert_ID(); $values{$identifier}
= $value; }
return($values{$identifier}); }
This function works fine, but, I notice that if I call the
function and
call several other functions from Tools.pm then call
'table_value()'
again, it seems to have lost all the values in %values and
will reload
the values into %values again.
Is this because the scope of %values is declared with my and
the
variable is going out of scope when I leave the function?
How can I keep
the values in the %values hash so the program doesn't
constantly access
the information from the database?
Carl.
_______________________________________________
Perl-Unix-Users mailing list
Perl-Unix-Users listserv.ActiveState.com
To unsubscribe: http:/
/listserv.ActiveState.com/mailman/mysubs
|