我正在将 Unix Perl 脚本转换为在 Windows 上运行。我遇到的问题是路径中含有空格:
open (IN, "| C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysql.exe -u root -ppwd") or die "$!";
上面的代码抛出以下错误:
'C:\Program' is not recognized as an internal or external command,
我尝试包裹在逃脱\"
像这样:
open (IN, "| \"C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysql.exe -u root -ppwd\"") or die "$!";
但没有喜悦。如何处理带有空格的路径?
我正在使用为 MSWin32-x86-多线程构建的 ActiveState v5.10.0。
您正在引用整个命令,包括命令行参数。您应该将第二个转义引号放在mysql.exe
:
open (IN, "| \"C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysql.exe\" -u root -ppwd") or die "$!";
您可能还对qq()
and q()
运算符,允许您使用引号以外的分隔符来分隔字符串。当您想要引用包含引号的字符串时,它们非常有用:
qq[| "C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysql.exe" -u root -ppwd]
另外,Perl 会很乐意处理命令名称的正确路径分隔符(但并不总是命令参数,所以要小心):
qq[| "C:/Program Files/MySQL/MySQL Server 5.1/bin/mysql.exe" -u root -ppwd]
(由于此示例不需要任何插值,因此您可以使用单引号或q()
建造:
'| "C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysql.exe" -u root -ppwd'
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)