如何根据用户输入(字符串)在perl中调用子程序?
How to call subroutine in perl according to user input(string)?
我是 perl 编程的新手,我正在尝试根据用户输入调用子例程:
print "Would you like to [A]dd a new student or [R]eturn to the previous menu?";
$tempCommand = <>;
if($tempCommand eq "A") {addStudent()}
elsif($tempCommand eq "R") {mainmenu()}
else{mainmenu()}
调用总是以 else 条件结束,即使
我输入A或R。
您的问题是,当您使用 <>
从 STDIN
读取时,您返回并存储在 $tempCommand
中的值将附加一个换行符。您需要使用 chomp()
函数将其删除。
chomp($tempCommand = <>);
您需要从用户输入中截取换行符,它应该可以工作:
use strict;
use warnings;
print "Would you like to [A]dd a new student or [R]eturn to the previous menu? ";
chomp(my $tempCommand = <>);
if ($tempCommand eq "A") {
addStudent()
}
elsif ($tempCommand eq "R") {
mainmenu()
}
else {
mainmenu()
}
sub addStudent {
print "In sub \"Addstudent\"";
}
sub mainmenu {
print "In sub \"Mainmenu\"";
}
我是 perl 编程的新手,我正在尝试根据用户输入调用子例程:
print "Would you like to [A]dd a new student or [R]eturn to the previous menu?";
$tempCommand = <>;
if($tempCommand eq "A") {addStudent()}
elsif($tempCommand eq "R") {mainmenu()}
else{mainmenu()}
调用总是以 else 条件结束,即使 我输入A或R。
您的问题是,当您使用 <>
从 STDIN
读取时,您返回并存储在 $tempCommand
中的值将附加一个换行符。您需要使用 chomp()
函数将其删除。
chomp($tempCommand = <>);
您需要从用户输入中截取换行符,它应该可以工作:
use strict;
use warnings;
print "Would you like to [A]dd a new student or [R]eturn to the previous menu? ";
chomp(my $tempCommand = <>);
if ($tempCommand eq "A") {
addStudent()
}
elsif ($tempCommand eq "R") {
mainmenu()
}
else {
mainmenu()
}
sub addStudent {
print "In sub \"Addstudent\"";
}
sub mainmenu {
print "In sub \"Mainmenu\"";
}