类似数组格式的多个标准输入
Multiple standard input in array-like format
我需要让我的代码产生以下输出,但我无法让它工作。
示例程序输出
Please enter your 3 numbers: 12 45 78
Your numbers forward:
12
45
78
Your numbers reversed:
78
45
12
我的 Perl 代码
#!/usr/bin/perl
#use strict;
use warnings;
use 5.010;
print "Please enter your 3 numbers: \n";
my $n1 = <STDIN>;
my $n2 = <STDIN>;
my $n3 = <STDIN>;
print "Your numbers forward: \n";
print $n1;
print $n2;
print $n3;
#Possible Backup Idea
# my @names = (n1, n2, n3);
# foreach my $n (@names) {
# say $n;
# }
#2nd Possible Backup Idea
# print "$coins[0]\n"; #Prints the first element
# print "$coins[-1]\n"; #Prints the last element
# print "$coins[-2]"; #Prints 2nd to last element
print "Your numbers reversed: \n";
print $n3;
print $n2;
print $n1;
但是当它运行时,它不会像我一样在一行中接受所有输入
需要,必须输入3次才能生效。
Please enter your 3 numbers:
12
23
34
Your numbers forward:
12
23
34
Your numbers reversed:
34
23
12
my $n1 = <STDIN>;
一次读一整行。所以重复三次将读取三行。
相反,您想读取一行,然后 split 将其放在空白处变成数字数组。
my $input = <STDIN>;
my @numbers = split /\s+/, $input;
/\s+/
是匹配任意数量的空白字符的正则表达式。有关更多信息,请参阅 Perl Regex Tutorial。
然后您可以使用 for loops.
处理数字列表
print "Your numbers forward:\n";
for my $number (@numbers) {
print "$number\n";
}
print "Your numbers reversed: \n";
for my $number (reverse @numbers) {
print "$number\n";
}
您可以使用 stdin 获取输入,但您需要根据 space 字符作为分隔符进行拆分。
#!/usr/bin/perl
use warnings;
use strict;
use feature qw(say);
say "Pick 3 numbers";
my $input = <STDIN>;
my @numbers = split(/\s+/, $input);
my @reverse_numbers = reverse(@numbers);
say "Your numbers forward:";
say join("\n", @numbers);
say "Your numbers backwards:";
say join("\n", @reverse_numbers);
我需要让我的代码产生以下输出,但我无法让它工作。
示例程序输出
Please enter your 3 numbers: 12 45 78
Your numbers forward:
12
45
78
Your numbers reversed:
78
45
12
我的 Perl 代码
#!/usr/bin/perl
#use strict;
use warnings;
use 5.010;
print "Please enter your 3 numbers: \n";
my $n1 = <STDIN>;
my $n2 = <STDIN>;
my $n3 = <STDIN>;
print "Your numbers forward: \n";
print $n1;
print $n2;
print $n3;
#Possible Backup Idea
# my @names = (n1, n2, n3);
# foreach my $n (@names) {
# say $n;
# }
#2nd Possible Backup Idea
# print "$coins[0]\n"; #Prints the first element
# print "$coins[-1]\n"; #Prints the last element
# print "$coins[-2]"; #Prints 2nd to last element
print "Your numbers reversed: \n";
print $n3;
print $n2;
print $n1;
但是当它运行时,它不会像我一样在一行中接受所有输入 需要,必须输入3次才能生效。
Please enter your 3 numbers:
12
23
34
Your numbers forward:
12
23
34
Your numbers reversed:
34
23
12
my $n1 = <STDIN>;
一次读一整行。所以重复三次将读取三行。
相反,您想读取一行,然后 split 将其放在空白处变成数字数组。
my $input = <STDIN>;
my @numbers = split /\s+/, $input;
/\s+/
是匹配任意数量的空白字符的正则表达式。有关更多信息,请参阅 Perl Regex Tutorial。
然后您可以使用 for loops.
处理数字列表print "Your numbers forward:\n";
for my $number (@numbers) {
print "$number\n";
}
print "Your numbers reversed: \n";
for my $number (reverse @numbers) {
print "$number\n";
}
您可以使用 stdin 获取输入,但您需要根据 space 字符作为分隔符进行拆分。
#!/usr/bin/perl
use warnings;
use strict;
use feature qw(say);
say "Pick 3 numbers";
my $input = <STDIN>;
my @numbers = split(/\s+/, $input);
my @reverse_numbers = reverse(@numbers);
say "Your numbers forward:";
say join("\n", @numbers);
say "Your numbers backwards:";
say join("\n", @reverse_numbers);