【问题标题】:Perl's "make_path" and "remove_tree" give different results with an empty options hashPerl 的“make_path”和“remove_tree”使用空选项散列给出不同的结果
【发布时间】:2013-08-23 20:41:09
【问题描述】:

我的模块中有一行代码如下所示:

make_path($root_dir);

不幸的是,它没有创建所需的目录(我已经检查过,并且在那里确实有权限)。

但是,如果我将其更改为以下内容:

make_path($root_dir, {});

它工作正常。前面几行,我对make_path($root_dir);make_path($root_dir, {}); 有同样的奇怪行为。任何想法为什么会这样?

我正在使用 perl 5 版本 16 和 File:Path 版本 2.09。

【问题讨论】:

  • 看起来很奇怪。你能提供一个reproducible example吗? $root_dir 到底是什么?是否有任何东西被打印到标准错误?
  • 好计划@rutter。我实际上刚刚解决了它。 $root_dir 是一个Path::Class::Dir,所以make_path 必须在有配置哈希或其他东西的不同时间将其转换为标量。传入"$root_dir" 有效。我回家后会发布正确的答案。

标签: perl path mkdir


【解决方案1】:

Path::Class::Dir 类创建基于哈希的对象。

make_path 的用法是make_path(PATHS, OPTIONS_HASH)

当您将 Path::Class::Dir 对象作为make_path 的最后一个参数传递时,它会被用作选项哈希。

您可以通过显式提供选项哈希来解决此问题

make_path($path, {})

或通过显式字符串化路径

make_path("$path")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-12
    • 2012-12-14
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 2021-12-25
    • 2020-02-06
    • 2020-02-14
    相关资源
    最近更新 更多