【问题标题】:Reliable way to create a dir with perl?用 perl 创建目录的可靠方法?
【发布时间】:2013-02-19 07:10:12
【问题描述】:

来自http://perldoc.perl.org/File/Path.html 的 perl 文档中指出:

"2.0分支改了API。一时间,mkpath和rmtree 尝试处理两种不同的调用,但未成功 机制。这种方法被认为是失败的。

新语义现在仅适用于 make_path 和 删除树。旧语义只能通过 mkpath 和 rmtree。强烈建议用户至少升级到 2.08 in 为了避免意外。”

perl 中的一些内容让我感到惊讶。它似乎在说,如果我不能控制 perl 的版本(我不能),那么我真的没有任何可靠的方法来做像创建目录这样简单的事情。我发现,由于不支持他们指定的某些参数调用,因此存在比文档所述更多的问题。

无论如何,我的问题是,有没有一种可靠的方法可以在 perl 中创建一个目录,设置掩码、用户名和组,并且可以与旧版本的 perl 一起使用?我们使用的是 5.8.8

【问题讨论】:

  • 它说mkpath 仍然存在,我看不出它会消失的迹象。 (perl 重视向后兼容性,就像你不会相信的那样。)所以如果升级 File::Path 是不可行的,为什么不直接使用旧的 mkpath
  • 你无法控制perl的版本,但你当然可以控制File::Path的版本
  • @eevee。与 mkpath 相关的一点是“有一段时间,mkpath 和 rmtree 尝试处理两种不同的调用机制,但未成功。这种方法被认为是失败的”。那么我可以使用被认为是失败的接口吗?为什么它被认为是失败的?
  • 这种对 Perl 的偏见反感也让我感到惊讶。
  • @TLP:我相信 Perl 5 Porters 在保持向后兼容性方面太努力了。这意味着这样的失败几乎没有成本,人们开始责怪语言而不是自己的疏忽;即使感知到的问题是虚构的!当世界其他地方即将使用 v18 时运行 Perl v8 是不可原谅的。

标签: linux perl mkdir


【解决方案1】:

Perl 的版本与此无关。 File::Path 是一个模块,它提供了方便的功能mkpath,它可以在一次调用中创建路径中的所有目录。

您的 Perl 版本已经超过 7 年了,确实应该更新,但即便如此,最新版本的 File::Path 也可以正常安装。 Perl 拥有并且一直拥有内置函数 mkdir,它将创建一个目录。

【讨论】:

    【解决方案2】:

    File::Path 2.09 应该可以在 5.8.8 上完美安装

    【讨论】:

    • +1 表示我没有为使用旧版本的 perl 带来困难。最后,我只使用了 mkpath,因为在一家大公司,找人更新东西是件大事。
    • @MikeKulls 没有人让您为使用旧版本的 perl 感到难过。你因为你的 perl 版本过时而受到批评。
    • @TLP。那明显是错的。我指责 perl 进行了被认为是失败的更改、进行了太多更改以及它的文档不准确。
    • @MikeKulls 好吧,这个问题只适用于您使用该模块的旧版本。我刚刚为你连接了这些点。对于自 1995 年以来一直存在的模块而言,有多少更改是“太多”?
    • @TLP 我会将太多的更改描述为当他们确定某事有问题时,进行也有问题的更改,然后必须再次更改。
    猜你喜欢
    • 1970-01-01
    • 2022-10-24
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    相关资源
    最近更新 更多