Perl设置一个打开的目录,打开它,然后打开打开的目录?

时间:2011-02-24 00:06:51

标签: perl operating-system filepath

尝试对从CentOS到Windows的某些perl代码的端口进行故障排除。

对Perl一无所知,我移植的代码大约是700-1000行。 100%确定我遇到的一个问题与代码如何在运行的操作系统上呈现有关。

所以,我正在寻找一种方法来解决调试操作系统如何将文件路径与遗留代码区分开来的问题。由于“IP”原因,我无法发布到SO。

所以,我找了一些perl我可以设置一个目录在脚本中打开(例如,C:\ data \或/ home / data),然后脚本尝试加载目录,如果失败则打印或成功,然后打印它试图加载的字符串,无论代码是否未能打开目录。

接受建议,但这就是问题,也是我看到的解决方案。

问题,反馈,请求 - 只是评论,谢谢!!

2 个答案:

答案 0 :(得分:1)

这是你要找的吗?

use DirHandle;

my $dir = "test";
my $dh = new DirHandle($dir);

if($dh) {
  print "open directory succeeded\n";
}
else {
  print "open directory failed\n";
}

print $dir, "\n";

new DirHandle打开目录并返回一个句柄。如果打开失败,句柄将是undef。

答案 1 :(得分:1)

use IO::Dir;

my $dir = IO::Dir->new($dir_path) or 
   die "Could not open directory $dir_path: $!\n";

当然,$ dir_path是你想要的系统目录的一些路径,无论是var还是硬编码。 “老派”的方式会更像:

opendir my $dir, $dir_path or die "Could not open directory $dir_path: $!\n";

那个打印目录不会被打开,但程序会因为没有打开它会失败然后打印出精确错误的原因,这就是$!变数成立。