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

Reply via email to