在不忽略反斜杠的情况下解析命令行参数

Parsing command-line arguments without ignoring backslash

我需要获取 ARGV 的第一个元素并将其保存为我的模板以搜索文件。这个元素包含一个反斜杠 / 但是当我将它保存在一个变量中时,反斜杠消失了:

my $template = $ARGV[0];
print $template;

打印出 GGCC,而第一个参数是 GG\CC。我该如何解决这个问题?

这并不是 perl 的问题,而是您的 shell。

尝试输入:

echo \fish

你会看到输出:

fish

perl 有同样的问题 - 它甚至没有首先看到斜线,因为 shell 正在处理转义行并首先引用。

您唯一可以更改的是调用。在调用中添加一个额外的斜线:

echo \fish

你会得到:

\fish