Perl chomp不会删除换行符

时间:2014-05-03 17:47:36

标签: perl chomp

我想从文件的第一行读取一个字符串,然后在控制台中重复 n 重复,其中 n 被指定为第二行文件。

我认为简单吗?

#!/usr/bin/perl
open(INPUT, "input.txt");
chomp($text = <INPUT>);
chomp($repetitions = <INPUT>);
print $text x $repetitions;

input.txt如下

Hello
3

我预计输出为

HelloHelloHello

但是尽管使用了chomp,但是单词是新的分隔线。

Hello
Hello
Hello

您可以尝试以下Perl小提琴CompileOnline

奇怪的是,如果代码如下:

#!/usr/bin/perl
open(INPUT, "input.txt");
chomp($text = <INPUT>);
print $text x 3;

它可以正常工作并显示

HelloHelloHello

我误解了某些内容,还是在线编译器存在问题?

1 个答案:

答案 0 :(得分:4)

你遇到了行结尾的问题; chomp$/中删除$text的尾随字符/字符串,具体取决于平台。但是,您可以选择使用正则表达式从字符串中删除任何尾随空格

open(my $INPUT, "<", "input.txt");
my $text = <$INPUT>;
my $repetitions = <$INPUT>;

s/\s+\z// for $text, $repetitions;
print $text x $repetitions;
  

我正在使用初始帖子http://compileonline.com/execute_perl_online.php

中提到的在线Perl编辑器/编译器

输出的原因是字符串Hello\rHello\rHello\r在html(\r like line break)中的解释不同,而在控制台\r中则将光标返回到当前行的开头。