【问题标题】:chdir in perl using two strings: chdir "/home/$dir1/$dir2"perl 中的 chdir 使用两个字符串: chdir "/home/$dir1/$dir2"
【发布时间】:2019-12-09 17:32:18
【问题描述】:

我有两个字符串:$dir1$dir2。我想用chdir如下图:

chdir "/home/$dir1/$dir2";

当我尝试这样做时,它不会更改目录。我检查了当前工作目录和以前一样

有什么办法吗?

【问题讨论】:

  • 当你尝试时会发生什么?
  • 您可以使用来自Cwd 模块的cwd 检查您的“当前工作目录”
  • 如果您真的尝试过但没有成功,我敢打赌您的变量之一的末尾有一个换行符。
  • 请向我们展示更多您的代码。您如何测试chdir 是否成功?
  • 你知道进程不能改变其父进程的目录吗?

标签: perl directory chdir


【解决方案1】:

通常我会这样写:

use v5.10;
use File::Spec::Functions;

my $dir = catfile( '/home', $dir1, $dir2 );
die "Dir <$dir> isn't a directory or doesn't exist" unless -e -d $dir;
chdir $dir or die "Could not change to <$dir>: $!";

每当您对系统执行某项操作时,请检查结果以确保其发生。

而且,奇怪的是,我没有意识到 Pearson 在我的书 Effective Perl Programming 中的示例章节是 the one that covers stacked file test operators

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多