加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl 获取当前程序的绝对路径与勘误

发布时间:2020-12-16 00:18:33 所属栏目:大数据 来源:网络整理
导读:前言 ? 你写的脚本(或程序)的应用场景肯定有很多,如:本机登录用户在程序所在的目录下运行;本机登录用户在根目录下运行;或者是远程用户使用SSH调用。 ? 而此时,你的程序涉及到一些文件的读/写操作,这时就需要以当前程序所在绝对路径为文件路径坐标基
前言
? 你写的脚本(或程序)的应用场景肯定有很多,如:本机登录用户在程序所在的目录下运行;本机登录用户在根目录下运行;或者是远程用户使用SSH调用。
? 而此时,你的程序涉及到一些文件的读/写操作,这时就需要以当前程序所在绝对路径为文件路径坐标基点--以定位读/写文件的所在,才能成功地读写文件。

1. 错误方式之一

  1. use Cwd;

  2. my $cwd?=?getcwd();
  3. print?"CWD PATH = ",$cwd"n";
这种方式:
a.在本机登录用户在程序所在目录下运行该程序时 正确--获得该程序的绝对路径。
b.本机登录用户在根目录下运行和远程用户使用SSH调用获得的 路径皆为“/root”
2. 错误方式之二

  1. #!/usr/bin/perl

  2. use Cwd;
  3. use?File::Basename;

  4. my $cwd"$0 = "$0;
  5. if$0?=~?m{^/})
  6. {
  7. ??$cwd?=?dirname;
  8. ??$cwd?.='/';
  9. }
  10. else
  11. {
  12. ??my $dir?("$dir/$0"}
  13. print?"PATH = " a. 本机登录用户在程序所在目录下使用
  1. #/test_program.pl
运行该程序时会出错--绝对路径会多一个“.”。如“/opt/xxx/.”。
3. 正确的方式
  1. use?:Spec;
  2. my $path_curf?=?->rel2abs(__FILE__"C PATH = "$path_curf;
  3. my?$vol?$file)?>splitpath"C Dir = ";
使用这种方式就能任何场景下得到正确的当前程序的绝对路径“$dir”。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读