I like to use a 'global' variable like so:
our $PATH = '/path/to/the/files'; # note no trailing slash
my $fullpath = "$PATH/foo.txt";
jeffa
L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)
| [reply] [d/l] |
Several possibilities:
- Look in a series of locations for a file. The user's home directory, a system configuration directory, the application directory...
- Require an environment variable to contain the correct path.
- Write the installation location to your program when you're installing it.
| [reply] |
You can also code in defaults and allow command line overrides (such as specifying a root file directory) using something like Getopt::Long or Getopt::Std.
If the files are always relative to the installed script you can use FindBin to find the full path of your Perl script.
| [reply] |
Just a few ideas: FindBin::Bin and Cwd. I believe both come with Perl.
The former can be used to check out where you script resides — theoretically, I've had too many cases where it fails, including in programs "compiled" (or at least processed) using perl2exe/PerlApp. The latter can be used to determine the current (working) directory, hence the abbreviation. All too often, this is the location where your script is started up from. On Windows, if anybody creates a shortcut to your program, a .lnk file, the working directory to run the program under, is also stored inside the shortcut file. By default, this is the directory to the program. IMO people are generally willing to accept the program's need to be run in a specific directory, especially if the behaviour of the program depends on this directory. For example, it or a subdirectory may contain datafiles to be used in a specific setup. Just changing the working directory allows people to have multiple setups. | [reply] |
You don't provide any code and don't indicate what kind of files or how you are loading them, so the best we can do is guess. Try 'perldoc lib', or provide some detail about what it is you are actually trying to do.
| [reply] |