有什么核心的Perl从“<>”操作符来自动格格线?(Is there anything

2019-07-28 23:34发布

其中一个小烦恼做Perl的编码时,我有是有必要记住的Chomp您从输入读取一行。 是的,经过多年的编码它几乎是自动记住这样做,但仍然讨厌。

是否有任何附注,模块或其他任何在Perl(强烈优选核心单元),该自动每要吃掉线使用读<>运算符?

Answer 1:

除此之外,您已经提到的asquerous源过滤器,我怕我不知道作为“黑客”在这里你的目的最重要的。 你认为这些obviousish的解决方案是“黑客”?

  1. 重写*CORE::readline当前包
  2. 重写*CORE::GLOBAL::readline所有包
  3. 处理关系的一类具有自定义READLINE方法
  4. 所述的操作符重载<>运算符

您是否尝试过这些吗?

其中,我想第一个,或者可能是第二个,是最有可能做你想要做文章量最少的是什么。

请注意,这些解决方案的所有四个需要什么,但纯Perl的,没有别的。 他们甚至不要求任何核心模块,更不用说任何CPAN模块。



Answer 2:

我想你已经知道这一点,但是当你把命令行选项-nl在一起,你得到你想要的行为(假设您想隐while(<>)循环:

$ perl -nle 'printf q{%s}, $_'

通常情况下,两个选项是用来通过运行bash命令行短perl的命令,但我想没有什么能阻止你从脚本做:

#!/usr/bin/perl -nl

# puts the newline back on if you use print:
# print

# does not put the newline back on
printf '%s', $_;

这里的这种行为简述: http://www.perlmonks.org/?node_id=324749



文章来源: Is there anything in core Perl to auto-chomp lines from “<>” operator?
标签: perl input