Perl 获取当前程序的绝对路径与勘误
2013-02-23 21:42
288 查看
前言
你写的脚本(或程序)的应用场景肯定有很多,如:本机登录用户在程序所在的目录下运行;本机登录用户在根目录下运行;或者是远程用户使用SSH调用。
而此时,你的程序涉及到一些文件的读/写操作,这时就需要以当前程序所在绝对路径为文件路径坐标基点--以定位读/写文件的所在,才能成功地读写文件。
1. 错误方式之一
use Cwd;
my $cwd = getcwd();
print "CWD PATH = ",$cwd,"\n";
这种方式:
a.在本机登录用户在程序所在目录下运行该程序时正确--获得该程序的绝对路径。
b.本机登录用户在根目录下运行和远程用户使用SSH调用获得的路径皆为“/root”
2. 错误方式之二
#!/usr/bin/perl
use Cwd;
use File::Basename;
my $cwd;
print "\$0 = ",$0,"\n";
if($0 =~ m{^/})
{
$cwd = dirname($0);
$cwd .='/';
}
else
{
my $dir = getcwd();
$cwd = dirname("$dir\/$0");
}
print "PATH = ",$cwd,"\n";
这种方式:
a. 本机登录用户在程序所在目录下使用
#./test_program.pl
运行该程序时会出错--绝对路径会多一个“.”。如“/opt/xxx/.”。
3. 正确的方式
use File::Spec;
print "\n";
my $path_curf = File::Spec->rel2abs(__FILE__);
print "C PATH = ",$path_curf,"\n";
my ($vol, $dirs, $file) = File::Spec->splitpath($path_curf);
print "C Dir = ", $dirs,"\n";
使用这种方式就能任何场景下得到正确的当前程序的绝对路径“$dir”。
你写的脚本(或程序)的应用场景肯定有很多,如:本机登录用户在程序所在的目录下运行;本机登录用户在根目录下运行;或者是远程用户使用SSH调用。
而此时,你的程序涉及到一些文件的读/写操作,这时就需要以当前程序所在绝对路径为文件路径坐标基点--以定位读/写文件的所在,才能成功地读写文件。
1. 错误方式之一
use Cwd;
my $cwd = getcwd();
print "CWD PATH = ",$cwd,"\n";
这种方式:
a.在本机登录用户在程序所在目录下运行该程序时正确--获得该程序的绝对路径。
b.本机登录用户在根目录下运行和远程用户使用SSH调用获得的路径皆为“/root”
2. 错误方式之二
#!/usr/bin/perl
use Cwd;
use File::Basename;
my $cwd;
print "\$0 = ",$0,"\n";
if($0 =~ m{^/})
{
$cwd = dirname($0);
$cwd .='/';
}
else
{
my $dir = getcwd();
$cwd = dirname("$dir\/$0");
}
print "PATH = ",$cwd,"\n";
这种方式:
a. 本机登录用户在程序所在目录下使用
#./test_program.pl
运行该程序时会出错--绝对路径会多一个“.”。如“/opt/xxx/.”。
3. 正确的方式
use File::Spec;
print "\n";
my $path_curf = File::Spec->rel2abs(__FILE__);
print "C PATH = ",$path_curf,"\n";
my ($vol, $dirs, $file) = File::Spec->splitpath($path_curf);
print "C Dir = ", $dirs,"\n";
使用这种方式就能任何场景下得到正确的当前程序的绝对路径“$dir”。
相关文章推荐
- Perl 获取当前程序的绝对路径与勘误
- linux下获取程序当前目录绝对路径
- vc-获取程序当前绝对路径
- linux下获取程序当前目录绝对路径
- Linux中获取当前程序的绝对路径
- .NET获取当前应用程序的绝对路径,获取程序工作路径 以及图片处理
- 获取当前程序的绝对路径
- basic coder » linux下获取当前程序的绝对路径
- linux下获取程序当前目录绝对路径
- Perl 获取当前脚本的绝对路径
- linux下获取程序当前目录绝对路径
- linux下获取程序当前目录绝对路径
- Linux下获取当前程序的绝对路径
- C#、ASP.NET获取当前应用程序的绝对路径,获取程序工作路径
- linux下获取程序当前目录绝对路径
- C#、ASP.NET获取当前应用程序的绝对路径,获取程序工作路径(转)
- C#、ASP.NET获取当前应用程序的绝对路径,获取程序工作路径
- linux下获取程序当前目录绝对路径
- Python获取当前程序绝对路径和目录
- C#、ASP.NET获取当前应用程序的绝对路径,获取程序工作路径