【发布时间】:2011-09-02 19:38:06
【问题描述】:
我正在尝试调试朋友机器上的问题。 我编写了一个脚本来复制一些文件,该脚本使用了mkpath(我知道 mkpath 已经过时了,现在有了 make_path,但我使用的是旧版本的 perl)。
在我的机器上(使用 相同 版本的 perl 和操作系统等),即使在目录已经存在的情况下,脚本也可以正常运行。
然而,
当我尝试在朋友的机器上运行脚本时,mkpath 在已存在的目录上调用时会抛出错误!
它抛出的错误是'mkdir : File exists'
我很困惑为什么脚本在我的机器上可以运行,但在他的机器上却不行。
谢谢 法里德
编辑添加更多有用的信息
好的,这里还有一些东西可以帮助诊断这个问题
-
我们使用相同版本的 Perl 和 File。两者都存储在 Perforce 存储库中,因此我们 100% 使用相同的版本
-
我正在将文件复制到网络共享系统。因此文件路径的类型为:
\\NETWORK-COMP/Directory1/Directory2/Directory3 -
脚本循环遍历一堆文件并将它们复制过来。 第一个文件总是成功复制,但是第二个文件失败并出现错误
mkdir \NETWORK-COMP/Directory1 文件存在
Directory1 不是文件,它实际上是一个 GUID,没有冲突(我每次都仔细检查)!
【问题讨论】:
-
你在两台机器上使用相同版本的 File::Path 吗?
-
它们不是基于 Perl 的版本吗?我们使用的是相同版本的 perl
-
File-Path 是双活发行版,因此可以独立于
perl进行升级。 -
我从存储库 (Perforce) 采购 Perl,我们都同步到同一个存储库和版本
-
mkdir \NET...缺少\。