Re: Problem with use getting the wrong file
On Thu, 16 Aug 2001, Philip Mak wrote: Hi, I have two mod_perl programs on my site. One is in the directory inr2, and the other is in the directory otherinr2. These mod_perl programs have exactly the same code. Both of them do: use cfg; where cfg.pm is a file that's in both inr2 and otherinr2, but it's different in these directories. But the code in otherinr2 is getting the cfg.pm from inr2 since they have the same filename and relative paths. How can I make the use command not act braindead about this? Is there a CPAN module that I can import to overload the use command with something that takes the full pathname into account perhaps? try a do 'cfg.pm'; to force the compile otherwise you might want to take a look at Apache::Reload on CPAN. remco
Re: Problem with use getting the wrong file
I have two mod_perl programs on my site. One is in the directory inr2, and the other is in the directory otherinr2. These mod_perl programs have exactly the same code. Both of them do: use cfg; where cfg.pm is a file that's in both inr2 and otherinr2, but it's different in these directories. But the code in otherinr2 is getting the cfg.pm from inr2 since they have the same filename and relative paths. How can I make the use command not act braindead about this? Is there a CPAN module that I can import to overload the use command with something that takes the full pathname into account perhaps? You can specify a full path to use/require. Check man perlfunc for the details. You can also specify a path relative to the current working directory if you don't like hard-coding full paths in your scripts. - Perrin
Re: Problem with use getting the wrong file
I have two mod_perl programs on my site. One is in the directory inr2, and the other is in the directory otherinr2. These mod_perl programs have exactly the same code. Both of them do: use cfg; where cfg.pm is a file that's in both inr2 and otherinr2, but it's different in these directories. But the code in otherinr2 is getting the cfg.pm from inr2 since they have the same filename and relative paths. How can I make the use command not act braindead about this? Is there a CPAN module that I can import to overload the use command with something that takes the full pathname into account perhaps? You can specify a full path to use/require. Check man perlfunc for the details. You can also specify a path relative to the current working directory if you don't like hard-coding full paths in your scripts. - Perrin I have learned recently(and the original poster as well) that despite two files having different file names, and doing a require /full/path/to/file.pl, modperl will only compile the file once because they both have the same package name. I have yet to find a solution to the problem that I like... I have a file that contains the database information (username, password, db name, connect functions, ect) and for a while I couldnt figure out why two scripts using two seperate files for database info would connect to the wrong database heh. ryan
Re: Problem with use getting the wrong file
I have learned recently(and the original poster as well) that despite two files having different file names, and doing a require /full/path/to/file.pl, modperl will only compile the file once because they both have the same package name. No, I don't think that's correct. Perl will compile both files if they have different paths and you specify the full path. However, if they do have the same package name, the second one will overwrite the first one, which is probably not what you intended. I have yet to find a solution to the problem that I like... I have a file that contains the database information (username, password, db name, connect functions, ect) and for a while I couldnt figure out why two scripts using two seperate files for database info would connect to the wrong database heh. There are tons of solutions for having separate config files for two scripts. You could name the config files differently and call the right one from each script. You could use a path relative to the current directory in your require statement. You could one conf file with one big hash of configuration that is keyed on a variable you set with PerlSetVar to something different for each script. - Perrin