Hello Unnamed Person, You might want to try:
my $HOME = ($0 =~ /^(.*\/)/)[0]; This will set $HOME to the path of the executing script. Note that this is not completely portable, though it works fairly reliably on Linux. So if you put your Perl script in /var/www/cgi-bin (for example), you could do this to get /var/www/htdocs: my $HTDOCS = "$HOME../htdocs"; Or whatever, etc. etc. Regards, Alec On Tue, Nov 04, 2003 at 11:35:35AM +1100, [EMAIL PROTECTED] wrote: > Just a minor typo with attempt 2, the code is > > push(@INC, $cgibin); > > Thanks > > > Hi Sluggers: > > > > I have been looking at an efficient way to move away from having to > > constantly have paths specified in scripts repeatedly. So here is the > > full story in great detail so that I can hopefully get an informed > > decision. This is not a problem but merely looking for an efficient way > > to do this. > > > > When I write scripts (Perl) I normally specify the full paths to the > > base root directory (base html dir) and the path to cgi-bin specified. > > With these two paths I can access other scripts interfaces after pushing > > the path in @INC and use 'require', and also process text files etc .... > > > > Now I was normally specifying these two paths in all scripts at the top > > in the past. But recently have been thinking about moving away from > > this. So here are two things I did but is not quite to what I want to > > achieve but close. > > > > Attempt 1. > > =========== > > I basically have a text file where I have these two full paths > > specified. The file is located in the same directory as all the scripts. > > If there are scripts in another directory, then in that directory I have > > a sim link to the file that holds the actual path data. Now in all > > scripts, I just do this before anything else to set the paths: > > > > my @paths; > > > > open (FILE, "path.dat") || die "error blah blah ..."; > > while(<FILE>) { > > chomp; > > push @paths, $_; > > } > > close (FILE); > > > > As I know the order of the paths in the file, I have these two below as > > globals: > > > > my $homedir = $paths[0]; > > my $cgibin = $paths[1]; > > > > This work greats with browser called scripts, but I hit a problem with > > scripts that runs via cron. The problem with cron scripts is that it > > cannot open the "path.dat" file despite that it's in the same directory > > as the cron script itself. I think where cron executes (don't know > > where) it's not in reference with the same directory where the script > > and file is located, so cannot see it. > > > > So I moved away from this solution and went to attempt 2. > > > > Attempt 2. > > =========== > > I create a 'path.pl' script where I specify $homedir, $cgibin, and other > > other common used stuff by all scripts via a routine called > > "set_paths()". Then with "Exporter::Lite", I export these two variables > > and the others. > > > > In other scripts the problem is that I have to tell it from this > > 'path.pl' script is. So I am forced to have one path specified. i.e I > > have to define > > > > $cgibin = "/path_to_where_path.pl_is_located"; > > > > Then I do this > > > > push($cgibin, @INC); > > require 'path.pl'; > > > > &set_paths(); > > > > This now has all common stuff accessible. But I still have to specify > > one hardcoded path in all scripts which is no way as good as attempt > > one. With attempt 2 cron scripts also works fine. > > > > I have been looking at a way to have @INC permanently have the path to > > where this 'path.pl' is located so that all I need to do is just call > > "&set_paths()". I read about this from this url > > > > http://perl.apache.org/docs/1.0/guide/porting.html#_INC_and_mod_perl > > > > However I'm not sure what configuration file they are talking about and > > also what is this startup.pl script located. It also appears that only > > the server administrator can do this. Is this right ? > > > > So for now I am with attempt 2 as I can run cron and browser called > > scripts. > > > > If anyone have some thoughts or a better solution on this please share > > them with me. > > > > Cheers. > > > > > > -- > > SLUG - Sydney Linux User's Group - http://slug.org.au/ > > More Info: http://lists.slug.org.au/listinfo/slug > > > > -- > SLUG - Sydney Linux User's Group - http://slug.org.au/ > More Info: http://lists.slug.org.au/listinfo/slug -- Evolution: Taking care of those too stupid to take care of themselves.
pgp00000.pgp
Description: PGP signature
-- SLUG - Sydney Linux User's Group - http://slug.org.au/ More Info: http://lists.slug.org.au/listinfo/slug