我有一个任务要求我为该字符串中的每个字符打印一个字符串的x次迭代.因此,如果字符串输入是"Gum",那么它应该打印出来:
Gum
Gum
Gum
Run Code Online (Sandbox Code Playgroud)
现在我的代码是
my $string = <>;
my $length = length($string);
print ($string x $length, "\n");
Run Code Online (Sandbox Code Playgroud)
而且我的口红印刷了五次作为我的输出.
由于您只是使用输入字符串,它仍然包含最后的换行符.这也算作一个角色.在我的系统上,它输出4 Gum\n.
chomp($string) 将删除行结束,但输出也将一起运行,导致 GumGumGum\n
那些说过你会在Windows系统的最后得到CR + LF的人都是错的.Perl会将原生行结尾转换为\n任何平台上的简单换行符.
无论您是从终端还是从文件中读取,都必须牢记这一点.
内置chomp函数将从字符串变量的末尾删除行终止符.如果字符串不以行终止符结束,则它将不起作用.
因此,当您键入时,GumEnter您将设置$string为"Gum\n",length并将显示它有四个字符.
您在屏幕上看到了五次,因为第一行是您自己键入的内容.以下四个由程序打印.
之后chomp,$string只"Gum"需要三个字符的长度,这就是你想要的.
要在单独的行上输出它,您必须在每行之后打印换行符,以便您可以编写
my $string = <>;
chomp $string;
my $length = length $string;
print ("$string\n" x $length);
Run Code Online (Sandbox Code Playgroud)
也许
print $string, "\n" for 1 .. $length;
Run Code Online (Sandbox Code Playgroud)
我希望有所帮助