我使用perl编写了一个简单的脚本,我想知道如何暂停程序或将其返回到之前的操作中?我有这个代码
print "put your name:";
$s=<>;
并没有输出任何东西。我希望程序重复相同的操作,即要求用户输入他的名字而不是进展。
答案 0 :(得分:3)
my $s = '';
while ($s eq '') {
print "put your name:";
chomp($s = <>);
}
print "The name you entered is $s \n";
答案 1 :(得分:2)
在开始之前无需设置$name
- 只需定义它:
my $name;
while ( not length $name ) { #Thx Dave Cross
print "What is your name? ";
$name = <STDIN>;
chomp $name;
}
在Perl中,使用my
定义的变量(应该是变量的99%)具有有限的范围。如果他们在块中定义(使用像while
循环这样的大括号的东西),他们一旦离开块就会失去价值< / em>的。这就是为什么我必须在my $name;
之前while
。
如果while ( not $name ) {
未定义或为空值,$name
将有效,因此这将循环,直到我在$name
中输入一些不为空的内容
chomp
删除了我按下<ENTER>
键时输入的NL字符。在阅读任何类型后,您应始终chomp
变量。只是习惯它。
在这种形式中,循环是自我记录。我正在循环,$name
没有填写。
您可以将chomp
与输入结合使用,如下所示:
my $name;
while ( not $name ) {
print "What is your name? ";
chomp ( $name = <STDIN> );
}
有些人喜欢这样,因为它有点短,但我不知道它是否更清楚。我是代码清晰度的粉丝,因为它更容易维护。
答案 2 :(得分:1)
sub readstr {
while (my $in = <>) {
chomp $in;
return $in if length $in;
}
"";
}
print "put your name:";
my $s = readstr();