在我们的一台 Windows XP 机器上,Perl 系统命令(例如)会dir /b
生成错误消息,例如:/b: no such file or directory
. 换句话说,开关被解释为文件名。
无论我使用backticks
,open()
还是system()
. 我什至尝试将开关作为单独的参数传递给 system()。当然,我已经确认该调用在 DOS 命令行或批处理脚本上正常工作。
有没有其他人遇到过这个?
您可能安装了 Cygwin 并且dir.exe
在您的路径中,该路径不是cmd.exe
内置的,而是ls
.
C:\> 哪个目录 /usr/bin/目录 C:\> c:\opt\cygwin\bin\dir.exe --version 目录(GNU coreutils)8.15 由 Cygwin 打包(8.15-1) … C:\> 目录 /b … C:\> perl -e "打印`dir /b`" dir: 无法访问 /b: 没有这样的文件或目录 C:\> perl -e "打印`cmd /c dir /b`" …
未验证:
dir
是命令解释器内置的命令。/c
使用or开关运行命令解释/k
器,后跟要执行的命令。