What does 'Constants.lib' look like? Does it have a 'package' statement?
Does it use Exporter?

If it's a package then unless you've got some magic in 'Constants.lib',
that BEGIN block will not pull the constants into the current package -
the 'import' call is missing. (See perldoc -f use)

If it isn't a package, then it will only get pulled into the first
package that 'require's it. In this case you probably want to be using
'do "file"' rather than 'require', however it would probably be better
to convert the file into a proper package.

What's so terrible about loading the constants file at startup?


Steve Piner


allan juul wrote:
> 
> hi
> 
> i wish to use use constants defined in a seperate file. my problem is, that
> sometimes it works sometimes it doesn't. when failing, the error_log says
> Bareword is not allowed so i guess it sometimes never loads my constants file
> at all.
> 
> this is my basic approach:
> 
> Package Foo:Bar;
> 
> use strict;
> 
> BEGIN {
>   require "Constants.lib";
> }
> 
> sub handler {
>   my $r = shift;
>   ...
> 
>   my $sql = SQL_SELECT; # pull in constant value
>   ....
> 
> }
> 
> is this a stupid approach, and if so what would be a more correct solution?
> (i would prefer _not_ to have the constant file loaded once and for all in a
> startup.pl).
> 
> any suggestions appriciated
> thanks
> ./allan

-- 
Steve Piner
Web Applications Developer
Marketview Limited
http://www.marketview.co.nz

Reply via email to