1

我想从文件的第一行读取一个字符串,然后在控制台中重复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 fiddle CompileOnline上试试

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

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

它会正常工作并显示

HelloHelloHello

是我误解了什么,还是在线编译器有问题?

4

1 回答 1

4

您对行尾有疑问;删除fromchomp的尾随字符/字符串,这可能因平台而异。但是,您可以选择使用正则表达式从字符串中删除任何尾随空格,$/$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 像换行符),而在控制台中将\r光标返回到当前行的开头。

于 2014-05-03T18:12:15.360 回答