in reply to requiring files

Well, the problem with this approach is that you need to define the variables in the main script (login.pl) this is because you are using strict... (and no, this does not mean you should drop strict).

In login.pl, add: use vars qw/$dbase $mysql_user $mysql_pass/;

Also you should add 1; at the end of the config.pl.

If you really don't want to add 'use vars' and such, then you should consider making it a module and using the export/import routines...

Something like (note, filename should change to Config.pm, and the require line should change to 'use Config':

package Config; use Exporter; use vars qw/$dbase $mysql_user $mysql_pass/; # You could also use 'our + $dbase' etc, but our does more then 'use vars'... @ISA = qw/Exporter; @EXPORT = qw/$dbase $mysql_user $mysql_pass/ $dbase = "..."; # or our $dbase if you left out 'use vars' # other vars 1;

(updated: added the code for exporter)

update: you should add the 'use vars'-code to every file in which you have 'require config.pl' and 'use strict'... (which is why IMHO it isn't a very good approach)

Replies are listed 'Best First'.
Re^2: requiring files
by Anonymous Monk on Feb 15, 2005 at 21:10 UTC
    Thanks for your help.

    I added "use vars" as you said and it did load the main page but everything else fails. I have 2 login scripts that are using the config codes and they both load the initial form to login but submitting ANYTHING creates an ISE 500 error (even when fatalsToBrowser should be running). So it's definitely messing up my scripts and it looks like having separate config sections at the top of all these scripts would be better and more reliable then having just one config.pl to edit :(

      After more testing I found out that the variables don't seem to be sendining.

      The use vars and the require() are both on the top of the script. I tossed in a " print "test $dbase $mysql_user $mysql_pass";" line after my header on one of the login scripts and it only prints the word "test".

      So it would seem even though the variables are defined in the scripts, they aren't being set.

      Any ideas?

        Are you using 'my $var = ?' or 'our $var = ?' or '$var = ?' in config.pl? (you shouldn't be using my).