<STDIN> 使用 Ctrl-Z 时仅在 Perl 脚本中第一次工作
<STDIN> working only the first time in Perl script when using Ctrl-Z
作为 Perl 初学者,我正在尝试做一个来自 Randal L. Schwartz "Learning Perl" 的简单练习。练习包括从用户输入 (<STDIN>
) 中获取元素列表,对其进行排序,并在排序后将其显示在屏幕上。该列表可以以两种不同的方式输出,在同一行使用逗号,或在不同的行。
我的问题是当我从用户输入中获取列表时(在每个元素之间输入和Ctrl-Z 当用户完成时),我无法再次使用 <STDIN>
。因此,我无法获得所需输出方法的用户输入。
请多多包涵,我乐于接受所有建议,包括如何使用 Stack Overflow,因为这是我第一次 post 来到这里。
编辑:我正在 Windows,在 Eclipse 中使用 EPIC 模块。我已经试过了 Crtl-D.
这是我的代码:
#!/usr/bin/perl
use 5.014;
use warnings;
use utf8;
print "Enter the list you want to sort.";
print "Type each element followed by <Enter>.\n";
print "Type <Ctrl-Z> when you are done:\n";
my @list = <STDIN>;
@list = sort @list;
print "Do you want the elements to be printed on individual lines [i] or on the same line [s]?\n";
chomp (my $userChoice = <STDIN>);
if ($userChoice eq "i")
{
foreach (@list)
{
print $_;
}
}
else
{
chomp(@list);
print shift @list;
foreach (@list)
{
print ", " . $_;
}
}
问题来自 EPIC 或 Eclipse。如果我在 Windows 控制台中 运行 我的代码,一切都很好。不过,我必须使用 Ctrl-Z + Enter。感谢@Сухой27 的评论。
作为 Perl 初学者,我正在尝试做一个来自 Randal L. Schwartz "Learning Perl" 的简单练习。练习包括从用户输入 (<STDIN>
) 中获取元素列表,对其进行排序,并在排序后将其显示在屏幕上。该列表可以以两种不同的方式输出,在同一行使用逗号,或在不同的行。
我的问题是当我从用户输入中获取列表时(在每个元素之间输入和Ctrl-Z 当用户完成时),我无法再次使用 <STDIN>
。因此,我无法获得所需输出方法的用户输入。
请多多包涵,我乐于接受所有建议,包括如何使用 Stack Overflow,因为这是我第一次 post 来到这里。
编辑:我正在 Windows,在 Eclipse 中使用 EPIC 模块。我已经试过了 Crtl-D.
这是我的代码:
#!/usr/bin/perl
use 5.014;
use warnings;
use utf8;
print "Enter the list you want to sort.";
print "Type each element followed by <Enter>.\n";
print "Type <Ctrl-Z> when you are done:\n";
my @list = <STDIN>;
@list = sort @list;
print "Do you want the elements to be printed on individual lines [i] or on the same line [s]?\n";
chomp (my $userChoice = <STDIN>);
if ($userChoice eq "i")
{
foreach (@list)
{
print $_;
}
}
else
{
chomp(@list);
print shift @list;
foreach (@list)
{
print ", " . $_;
}
}
问题来自 EPIC 或 Eclipse。如果我在 Windows 控制台中 运行 我的代码,一切都很好。不过,我必须使用 Ctrl-Z + Enter。感谢@Сухой27 的评论。