在Windows上安装Chef之后,如果它们包含正斜杠,我发现一些dos命令在Perl中不再起作用。例如,在Perl中运行`dir /AD .`
现在会给您一些警告,例如dir: /AD: No such file or directory
。我知道正斜杠指向chef-client进程当前工作目录的根目录。但这对Perl来说也很烦人。有没有什么办法解决这一问题?感谢。
更多信息以澄清问题:
我使用的是一台相当干净的win7 64bit机器,配有ActivePerl 5.8.8和Chef客户端11.12.2-1。问题显然与Chef安装有关。首先,当我安装和卸载Chef客户端时,它会打开和关闭。其次,当我运行dir /
时,它会列出C:\ opscode \ chef \ embedded文件夹的内容。
答案 0 :(得分:3)
Chef
没有造成任何问题。我的系统对命令my @dirs = `dir /AD .`
的响应相同。它将/AD
视为目录,而不是在返回当前目录中所有文件之前抛出相同错误消息"dir: /AD: No such file or directory"
的标记。
使用mob的my @dirs = `cmd /C dir /AD .`
注释解决方案可以解决问题,并根据需要返回目录列表。
但是,解决此问题的最佳方法是通过不依赖于特定于操作系统的内置函数来使您的perl代码跨平台兼容。例如,使用以下命令可以轻松地获取cwd中的目录列表:
my @dirs = grep -d, <*>;
<强>更新强>
我在Windows 7 x64上运行Strawberry perl 5.18.2
C:\>perl -v
This is perl 5, version 18, subversion 2 (v5.18.2) built for MSWin32-x64-multi-thread
鉴于你对任务范围的分享,我认为暴徒的解决方案可能是你最好的选择。是的,必须替换所有这些反引号``
和qx()
来电是一件痛苦的事,但我没有预见到更好的选择。祝你好运确定厨师是否/如何导致这个问题。暂时没有其他任何补充。