Perl given-when 语句
在Perl中,g iven-when 语句是长的if语句的替代品,它将一个变量与多个积分值进行比较。
- given-when 语句是一个多向分支语句。它提供了一种简单的方法,根据表达式的值将执行分配到代码的不同部分。
- given 是一个控制语句,它允许一个值来改变对执行的控制。
Perl中的 given-when 与 C/C++ 、 Python 或 PHP 中的 switch-case 类似 。 就像 switch 语句一样,它也可以用不同的情况来代替多个if语句。
语法
given(expression)
{
when(value1) {Statement;}
when(value2) {Statement;}
default {# Code if no other case matches}
}
given-when 语句还使用了另外两个关键字,即 break 和 continue。 这些关键字可以维持程序的流程,并帮助脱离程序的执行或跳过某个特定值的执行。
break: break关键字用于跳出一个 when 块。在Perl中,没有必要在每个 when 块后面明确地写上break。
continue: 另一方面,如果第一个 when 块是正确的,那么continue将进入下一个 when 块。
在一个 给定的when 语句中,一个条件语句不能在多个 when 语句中重复,这是因为Perl只检查该条件的第一次出现,接下来重复的语句将被忽略。另外,默认语句必须放在所有的 when 语句之后,因为编译器会依次检查每个 when 语句的条件匹配情况,如果我们将默认语句放在中间,那么它就会在那里休息一下,并打印默认语句。
例子
#!/usr/bin/perl
# Perl program to print respective day
# for the day-code using given-when statement
use 5.010;
# Asking the user to provide day-code
print "Enter a day-code between 0-6\n";
# Removing newline using chomp
chomp(my day_code = <>);
# Using given-when statement
given (day_code)
{
when ('0') { print 'Sunday' ;}
when ('1') { print 'Monday' ;}
when ('2') { print 'Tuesday' ;}
when ('3') { print 'Wednesday' ;}
when ('4') { print 'Thursday' ;}
when ('5') { print 'Friday' ;}
when ('6') { print 'Saturday' ;}
default { print 'Invalid day-code';}
}
输入
4
输出
Enter a day-code between 0-6
Thursday
嵌套的给定-当语句
嵌套 给定 语句是指在另一个 给定 语句内的 给定 语句。这可以用来维护用户为特定输出集提供的输入的层次结构。
语法
given(expression)
{
when(value1) {Statement;}
when(value2) {given(expression)
{
when(value3) {Statement;}
when(value4) {Statement;}
when(value5) {Statement;}
default{# Code if no other case matches}
}
}
when(value6) {Statement;}
default {# Code if no other case matches}
}
下面是一个嵌套的 given-when 语句的例子。
#!/usr/bin/perl
# Perl program to print respective day
# for the day-code using given-when statement
use 5.010;
# Asking the user to provide day-code
print "Enter a day-code between 0-6\n";
# Removing newline using chomp
chomp(my day_code = <>);
# Using given-when statement
given (day_code)
{
when ('0') { print 'Sunday' ;}
when ('1') { print "What time of day is it?\n";
chomp(my day_time = <>);
# Nested given-when statement
given(day_time)
{
when('Morning') {print 'It is Monday Morning'};
when('Noon') {print 'It is Monday noon'};
when('Evening') {print 'It is Monday Evening'};
default{print'Invalid Input'};
}
}
when ('2') { print 'Tuesday' ;}
when ('3') { print 'Wednesday' ;}
when ('4') { print 'Thursday' ;}
when ('5') { print 'Friday' ;}
when ('6') { print 'Saturday' ;}
default { print 'Invalid day-code';}
}
输入
1
Morning
输出
Enter a day-code between 0-6
What time of day is it?
It is Monday Morning
输入
3
输出
Enter a day-code between 0-6
Wednesday
在上面的例子中,当输入的日代码不是1时,代码将不会进入嵌套的 给定时间 块,输出将与前面的例子相同,但如果我们给1作为输入,那么它将执行嵌套的 给定时间 块,输出将与前面的例子不同。