【发布时间】:2012-01-29 14:03:04
【问题描述】:
我有一个 Perl 脚本,它在 HPUX 11i v3 上的 Perl 5.005 下运行良好,但在我的 Ubuntu 11.04 机器上的 Perl 5.10 下会导致一个小问题。
归结为如下一行:
open (CMD, "do something | grep -E 'sometext$' |");
(它实际上是在捕获ps -ef 输出以查看进程是否正在运行,但我认为这并不重要(a))。
现在这在 HPUX 环境中运行良好,但是当我在 Ubuntu 下尝试时,我得到:
sh: Syntax error: Unterminated quoted string
通过插入大量的调试语句,我将其追踪到那个有问题的行,然后开始一个一个地删除字符,直到它停止抱怨。幸运的是,$ 是我尝试的第一个,它不再给我错误,所以我将行改为:
open (CMD, "do something | grep -E 'sometext\$' |");
并且它运行良好(无论如何在 Linux 下 - 我没有在 HPUX 上测试过,因为我今天无法访问那台机器 - 如果它确实有效,我将使用这种方法,但我仍然喜欢知道为什么会出现问题)。
所以很明显$ 在我的 Linux 环境下“吞下了”单引号,但在 HPUX 环境下却没有。
我的问题很简单,为什么?当然,在 5.005 和 5.10 之间没有任何大的变化。还是我缺少某种配置项?
(a) 但是,如果您知道一个更好的方法没有外部 CPAN 模块(即,只安装基线 Perl 5.005),我会很高兴知道。
【问题讨论】:
-
“在 5.005 和 5.10 之间肯定没有任何大的变化” 这是 11 年的变化。这两个版本之间有很多的变化。查看各种 perldelta 手册页。
标签: perl