相对路径似乎是相对于脚本执行的位置而不是perl脚本的位置.如何使相对路径相对于脚本的位置?
例如,我有一个目录结构
dataFileToRead.txt ->bin myPerlScript.pl ->output
在perl脚本中我使用代码打开dataFileToRead.txtmy $rawDataname =“../ dataFileToRead.txt”;打开INPUT,“<”,$rawDataname; 如果我从bin目录运行perl脚本,那么它可以正常工作 如果我从父目录运行它,那么它无法打开数据文件.
use FindBin;
那么标量$FindBin :: Bin是Perl脚本位置的绝对路径.您可以在打开数据文件之前使用chdir,或者只在要打开的文件的路径中使用它
my $rawDataname = "$FindBin::Bin/../dataFileToRead.txt"; open my $in,"<",$rawDataname;
(顺便说一下,除了非常古老的perl之外,最好使用词法文件句柄.)