为什么Perl系统调用无法调用内部Windows命令?

UhC*_*lem 2 windows perl cygwin cmd system

在我们的一台Windows XP机器上,Perl系统命令如dir /b生成错误消息,如:/b: no such file or directory.换句话说,该开关被解释为文件名.

无论我使用backticks,open()还是发生这种情况system().我甚至尝试将交换机作为单独的arg传递给system().当然,我已经确认该调用在DOS命令行或批处理脚本上正常工作.

有没有人遇到过这个?

Sin*_*nür 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`"
…