在我们的一台Windows XP计算机上,Perl系统命令(例如dir /b
)会生成错误消息,例如:/b: no such file or directory
。换句话说,该开关被解释为文件名。
无论我使用backticks
,open()
还是system()
,都会发生这种情况。我甚至尝试将交换机作为单独的arg传递给system()。当然,我已经确认该调用在DOS命令行或批处理脚本上正常工作。
还有其他人遇到过这个吗?
答案 0 :(得分:5)
您可能安装了Cygwin,而dir.exe
位于您的路径中,而不是cmd.exe
内置的ls
的别名。
C:\> which dir /usr/bin/dir C:\> c:\opt\cygwin\bin\dir.exe --version dir (GNU coreutils) 8.15 Packaged by Cygwin (8.15-1) … C:\> dir /b … C:\> perl -e "print `dir /b`" dir: cannot access /b: No such file or directory C:\> perl -e "print `cmd /c dir /b`" …
答案 1 :(得分:1)
未验证:
dir
是一个命令解释器内置命令。改为使用/c
或/k
开关运行命令解释程序,然后执行要执行的命令。