Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Perl中的backticks操作符在没有引号的情况下不能在Windows上工作?_Perl_Strawberry Perl - Fatal编程技术网

为什么Perl中的backticks操作符在没有引号的情况下不能在Windows上工作?

为什么Perl中的backticks操作符在没有引号的情况下不能在Windows上工作?,perl,strawberry-perl,Perl,Strawberry Perl,我对Perl非常陌生,所以如果这个问题很琐碎,请原谅我 在工作中,我接到了一项任务,要创建一个脚本,当其他开发人员错过任务的截止日期时,该脚本将发送电子邮件。由于整个工作都必须在Windows上进行,所以我使用了Windows命令date/T来执行日期检查。我使用backticks操作符调用了很多外部命令,但在这种特殊情况下,backticks不起作用: my $date = `date /T`; 产出: date: invalid date `/T' Mon 07/07/2014 使用一

我对Perl非常陌生,所以如果这个问题很琐碎,请原谅我

在工作中,我接到了一项任务,要创建一个脚本,当其他开发人员错过任务的截止日期时,该脚本将发送电子邮件。由于整个工作都必须在Windows上进行,所以我使用了Windows命令
date/T
来执行日期检查。我使用backticks操作符调用了很多外部命令,但在这种特殊情况下,backticks不起作用:

my $date = `date /T`;
产出:

date: invalid date `/T'
Mon 07/07/2014
使用一些附加引号修复了此问题:

 my $date = `"date /T"`
产出:

date: invalid date `/T'
Mon 07/07/2014
我的问题是:为什么会这样


如果其他带有反勾号的外部调用也能起到同样的作用,我会得到这样的结果,但这是我唯一必须以这种方式调用的调用,才能使其起作用。

您似乎无意中使用了Cygwin/GnuTools版本的
date

在Windows命令提示符下,
date/T
给出当前时间。
这不是一个可执行文件,这是一个命令

但是,在Cygwin/GnuTools环境下运行
date/T
会给出
date:invalid date'/T'


这是因为环境1)无法看到Windows
date
命令,而2)在其
PATH
环境变量中找到一个
date
可执行文件,并运行它。

它在没有引号的情况下对我有效。如果排除引号(除了“不工作”)会发生什么你在用Cygwin吗?在命令提示下,
date/T
起作用。在Cygwin下,
date/T
给出了
date:invalid date`/T'
。这听起来像是在没有引号的情况下调用它,它指向Cygwin基于Cygwin路径的
date
可执行文件。当您使用引号调用它时,它将根据您的Windows路径使用Windows的日期可执行文件。进入Cygwin并键入
哪个日期
键入日期
,您将看到您没有使用Windows日期。为什么不使用纯Perl方法获取日期?e、 g.
使用时间::件;my$t=本地时间;打印$t->strftime(“%a%d/%m/%Y”)这使您无需1)检查外部命令中的错误,2)担心不同平台上的外部命令之间的差异,以及3)担心恼人的引用问题。