【发布时间】:2009-09-29 06:51:42
【问题描述】:
我有一个 Perl 子例程,它询问用户的输入。我在该子程序本身内部执行检查输入的输入是否为有效输入。
如果不是,我想再次调用子程序,让用户这次输入有效的输入。
我的子程序如下:
sub some_routine {
print "Enter a number to select (1) Apple (2) Mango (3) grapes:"
$value=STDIN;
if($value =~ /[^1-3]/ ) {
print "The input is not valid!";
print "Do you want to continue selecting a fruit again (Y or N)?";
$choice = STDIN;
if( $choice eq "y") {
### I want to call the subroutine again to enter input ###
} else {
exit;
}
}
}
那么如何在这个中递归一个子程序呢?
【问题讨论】:
-
为什么要追索?也许是一个while循环?
-
当我使用 some_routine();递归没有任何反应(它不会返回要求用户再次输入以进行选择)......我该怎么办?
-
大家好...感谢您的回答...。我的上述评论是由于以下原因造成的:::::: ==> 当我给出值时 "y" 。 .. $choice 变为 "y\n" 并且它不会进入 if sttmnt 因为它附加了一个换行符...在这种情况下递归子例程 :: some_routine(); sttmnt 就足够了:)
-
您发布到 Using Perl5 in Web Programming 的链接是一本非常古老(1996 年)、非常盗版的书。不要出于这两个原因使用这本书。有很好的、合法的、作者认可的资源,比如hop.perl.plover.com,所有的书都在perl.org/books/library.html
标签: perl recursion subroutine