Perl 中的 mkdir 调用失败

发布于 2024-12-10 12:20:28 字数 664 浏览 0 评论 0原文

我正在尝试使用 Perl 创建一个目录。但是这个调用失败了。 但是,当我尝试在 shell 提示符中创建相同的目录结构时,它工作正常。 有人可以告诉我为什么我无法在目录结构中创建目录吗? 示例:

$absolutepath = "/localdatafs1/Domino/mail\abhy.nsf/Sent/Metadata";
print $absolutepath."\n";
mkdir "$absolutepath" or die $!;

在此示例中,localdatafs1Dominomail\abhy.nsfSent 是已经存在的目录存在。我想使用 Perl 在目录结构 /localdatafs1/Domino/mail\abhy.nsf/Sent/Metadata 中创建一个名为 metadata 的目录。此 mkdir 调用失败。

如果我在 shell 提示符下执行命令

mkdir /localdatafs1/Domino/mail\abhy.nsf/Sent/Metadata

,目录就会成功创建。

为什么我无法使用上述路径在 Perl 中创建目录?

I am trying to create a directory using Perl. But this call fails.
However when I try to create the same directory structure in shell prompt, it works fine.
Could someone please let me know why I am not able to create the directory in the directory structure?
Example:

$absolutepath = "/localdatafs1/Domino/mail\abhy.nsf/Sent/Metadata";
print $absolutepath."\n";
mkdir "$absolutepath" or die $!;

In this example, localdatafs1, Domino, mail\abhy.nsf, and Sent are directories that already exist. I want to create a directory called metadata in the directory structure /localdatafs1/Domino/mail\abhy.nsf/Sent/Metadata using Perl. This mkdir call fails.

If I execute the command

mkdir /localdatafs1/Domino/mail\abhy.nsf/Sent/Metadata

in shell prompt, the directory gets created successfully.

Why I am unable to create the directory in Perl using the above path?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

人│生佛魔见 2024-12-17 12:20:28

你的 shell 理解的语言与 Perl 不同。在 shell 中,代码

/localdatafs1/Domino/mail\abhy.nsf/Sent/Metadata

生成字符串

/localdatafs1/Domino/mail\abhy.nsf/Sent/Metadata

在 Perl 中,代码

"/localdatafs1/Domino/mail\abhy.nsf/Sent/Metadata"

生成字符串,

/localdatafs1/Domino/mail?bhy.nsf/Sent/Metadata

其中 ? 表示不可打印的控制字符。 Perl 代码

"/localdatafs1/Domino/mail\\abhy.nsf/Sent/Metadata"

生成所需的字符串。请注意转义的“\”。

Your shell understands a different language than Perl. In your shell, the code

/localdatafs1/Domino/mail\abhy.nsf/Sent/Metadata

produces the string

/localdatafs1/Domino/mail\abhy.nsf/Sent/Metadata

In Perl, the code

"/localdatafs1/Domino/mail\abhy.nsf/Sent/Metadata"

produces the string

/localdatafs1/Domino/mail?bhy.nsf/Sent/Metadata

where the ? represents a non-printable control character. The Perl code

"/localdatafs1/Domino/mail\\abhy.nsf/Sent/Metadata"

produces the desired string. Note the escaped "\".

纵情客 2024-12-17 12:20:28
$path = "/localdatafs1/Domino/mail\abhy.nsf/Sent/Metadata"
                                  ^--- escape character, turning the path into

$path = "/localdatafs1/Domino/mail".chr(1)."bhy.nsf/Sent/Metadata"
$path = "/localdatafs1/Domino/mail\abhy.nsf/Sent/Metadata"
                                  ^--- escape character, turning the path into

$path = "/localdatafs1/Domino/mail".chr(1)."bhy.nsf/Sent/Metadata"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文