2

我正在连接到远程服务器的个人计算机上编写脚本。我认为远程服务器安装了 Perl 4.0 或更低版本,这就是它无法识别的原因。chomp该命令有替代方法吗?

4

3 回答 3

5

这不是一个确切的替代品,但您可以尝试:

$var =~ s/\r?\n?$//

这将剥离 CRLF (DOS)、LF (Unix)、CR (Mac?)。

普通的 chomp 操作符总是去掉当前$INPUT_RECORD_SEPARATOR为当前 O/S 定义的。

于 2009-04-28T13:45:00.840 回答
1

不建议采用印章路线,我会使用正则表达式,它们对其他人来说更具可维护性和透明性。习惯性地修改记录变量最终最终会污染一些糟糕的包并导致奇怪的事情发生。

于 2009-04-28T17:05:50.843 回答
0

我相信在 pre-5 perl 中使用了chop()。当然不如 chomp() 有用。如果您正在处理随机输入,您可能最好使用正则表达式,但如果您总是解析 unix 格式的文件:

while (<F>) {
  chop();
  do_stuff();
}

正如下面的评论所述,chop() 总是删除左值的最后一个字符,而不仅仅是换行符(或行尾 var 中的内容)。我知道这一点(因此“不如 chomp() 有用”评论)但不知何故忘记实际输入它。

于 2009-04-28T13:50:26.787 回答