此程序抛出错误。问题是我必须使用switch
case
。我怎么能在Perl中做到这一点?
#use strict;
#use warnings;
my $input = print "Enter the number";
$input = <STDIN>;
switch($input){
case "1" {print "UPC"}
case "2" {print "ES"}
case "3" {print "MS"}
else {print "Enter the correct value"}
}
答案 0 :(得分:2)
Perl's built in version of the case statement有点不同:
use feature "switch";
given ($foo) {
when (/^abc/) { $abc = 1; }
when (/^def/) { $def = 1; }
when (/^xyz/) { $xyz = 1; }
default { $nothing = 1; }
}
您可以使用use Switch;
添加更传统的案例陈述,但RobEarl指出这是不推荐的。
此外,从不注释掉use strict; use warnings;
作为解决问题的尝试!
答案 1 :(得分:2)
您需要导入Switch才能使用它:
use Switch;
但是,Switch已经deprecated。请参阅此问题:Why is the Switch module deprecated in Perl?
这里讨论了一些替代方案(及其实验状态):http://perldoc.perl.org/perlsyn.html#Switch-Statements
总之,如果您使用的是Perl&gt; 5.10.1,则可以将以下内容用于非弃用的非实验性切换:
use v5.10.1;
for ($var) {
when (/^abc/) { $abc = 1 }
when (/^def/) { $def = 1 }
when (/^xyz/) { $xyz = 1 }
default { $nothing = 1 }
}