这个“无法打开perl脚本:没有这样的文件或目录”的原因是什么?

9

如果我在Windows XP平台上运行此命令(在cygwin中)

perl /cygdrive/c/Sagar/New_ISP/isp_fw_11_24_Test_V1/Scripts/w
indows_test_report_tool/testdbmerge.pl

我收到了以下错误信息:

Can't open perl script "/cygdrive/c/Sagar/New_ISP/isp_fw_11_24_Test_V1/Scripts/w
indows_test_report_tool/testdbmerge.pl": No such file or directory.

为什么会这样呢?

假设文件确实存在 - 您是否拥有该文件和目录的访问权限?ls -l <file> 命令会给您什么输出? - Frank Schmitt
它原本的权限是-r-x------,我使用chmod更改为-rwxrwxrwx。即使如此,它仍然出现相同的错误。 - Sagar Gupta M.
2
去掉/w后面的换行符是什么意思?请将其删除。 - reinierpost
2个回答

12

确保你的路径中第一个 perl 是 cygwin 版本;如果是本地的 Win32 版本 (例如 ActiveState 或 Strawberry),它将无法理解 cygwin 的路径。

perl -V:osname 应该报告 cygwin,而不是 MSWin32。

MSWin32 版本的 perl 不理解任何以 /cygdrive/ 开头的路径。对于它来说,如果你执行了

perl c:/Sagar/New_ISPisp_fw_11_24_Test_V1/Scripts/windows_test_report_tool/testdbmerge.pl

这将有效。或者你可以使用cygpath工具将Cygwin路径转换为Windows路径,如下:

perl `cygpath -w /cygdrive/c/Sagar/New_ISP/isp_fw_11_24_Test_V1/Scripts/windows_test_report_tool/testdbmerge.pl`

1
它的输出为: $ perl -V:osname osname='MSWin32'; - Sagar Gupta M.
但是我能够在其他目录中运行其他Perl脚本,但是我无法在同一Cygwin中运行此目录中的Perl脚本。 - Sagar Gupta M.
@Sagar,MSWin32的perl无法理解以/cygdrive/开头的任何路径。如果你使用perl c:/Sagar/New_ISPisp_fw_11_24_Test_V1/Scripts/windows_test_report_tool/testdbmerge.pl,它会正常工作。 - cjm
4
或者 perl \cygpath -w /cygdrive/c/Sagar/New_ISP/isp_fw_11_24_Test_V1/Scripts/windows_test_report_tool/testdbmerge.pl``:这是一个命令,运行它将在Windows操作系统上调用Perl解释器来执行名为testdbmerge.pl的脚本文件。 - reinierpost

-1

我先找出了问题,你需要按照以下顺序运行这些命令才能使其正常工作。

  1. cd nipe
  2. sudo perl nipe.pl restart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接