首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl -How我把完整的目录路径名传递给perl脚本

Perl -How我把完整的目录路径名传递给perl脚本
EN

Stack Overflow用户
提问于 2014-10-03 20:31:54
回答 3查看 1K关注 0票数 0

我有一个perl脚本,它正在从"/root/pkt/sw/se/tool“路径执行,并且需要脚本中的完整目录路径。

你能告诉我怎么走完这条路吗?

sample.pl

代码语言:javascript
复制
 our ($tool_dir);

 use strict;
 use warnings;
 BEGIN {
   $tool_dir = $0;
   my $home_path = $tool_dir
   $home_path =~ s|\w*/\w*/\w*$||;
   my $target_path ="obj/Linux-i686/usr/share/ddlc/lib";
   $lib_dir = "$home_path$target_path";
   unshift(@INC, $lib_dir);
 }

我正在从"pkt/sw/se/tool“路径执行这个脚本,但是这里我只得到了"pkt/sw/se/tool”,而不是"/root/pkt/sw/se/tool“。

我的perl脚本可以在/root/pkt/sw/se/tools/sample.pl下面找到。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-04 17:58:00

使用前面提到的模块之一,不要使用backticks -除非您完全理解这样做的风险和含义。如果您确实想运行“pwd”,那么可以通过IPC::run 3这样的方式调用它。

示例:

代码语言:javascript
复制
#!/usr/bin/perl

use strict;
use warnings;

use Cwd;
use IPC::Run3;

# CWD
my $working_dir_cwd = getcwd; 
print "Woring Dir (Cwd): $working_dir_cwd\n";

# IPC::Run3
my ($in, $out, $err);
my @command = qw/pwd/;

run3 \@command, $in, \$out, \$err or die $?;

print "Working Dir (pwd): $out\n";
票数 1
EN

Stack Overflow用户

发布于 2014-10-03 20:41:56

您可以使用CWD模块(http://perldoc.perl.org/Cwd.html) (从该页面获取代码)。

代码语言:javascript
复制
use Cwd;
my $dir = getcwd;
use Cwd 'abs_path';
my $abs_path = abs_path($file);

或者您可以执行pwd命令。

代码语言:javascript
复制
$cwd = `pwd`;

如果您只想要这个目录,而不是完整的路径,您可以在Print current directory using Perl上查看现有的答案。

票数 2
EN

Stack Overflow用户

发布于 2014-10-03 20:39:20

您可以使用FindBin定位原始perl脚本的目录。

代码语言:javascript
复制
use FindBin;
use lib "$FindBin::Bin/../../../obj/Linux-i686/usr/share/ddlc/lib";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26186380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档