我想从文件的第一行读取一个字符串,然后在控制台中重复 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
我误解了某些内容,还是在线编译器存在问题?
答案 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;
中提到的在线Perl编辑器/编译器
输出的原因是字符串Hello\rHello\rHello\r
在html(\r like line break)中的解释不同,而在控制台\r
中则将光标返回到当前行的开头。