本文概述
Perl中的 last语句类似于C中的break语句。它在循环内使用, 以立即退出循环。换句话说, 最后一个条件会循环。
最后一个语句的Perl语法如下:
last;
Perl last语句示例
以下是显示Perl last语句的简单示例。
use warnings;
use strict;
my ($key, $value);
my %rate = ("shoes" => 550, "boots" => 1200, "jaggi" => 800, "jacket" => 1500);
print("Please enter an item to know the price:\n");
$key = <STDIN>;
chomp($key);
$value = 0;
# searching
foreach(keys %rate){
if($_ eq $key){
$value = $rate{$_};
last; }
}
# result
if($value > 0){
print("$key costs is Rs. $value \n");
}else{
print("$key is not in our list. We apologise!!\n");
}
输出
Please enter an item to know the price:
boots
boots costs is Rs. 1200
Please enter an item to know the price:
top
top is not in our list. We apologise!!
在上面的程序中
- 当用户提供密钥时, 哈希元素将通过循环运行, 并将每个哈希密钥与用户提供的密钥进行比较。
- 如果找到匹配项, 则使用 last语句退出循环, 否则继续搜索。
- 找到匹配结果后, 将显示该结果。
Perl关于LABEL的 last语句
仅使用Perl last语句, 就只能退出最内部的循环。如果要退出嵌套循环, 请在外部循环中放置一个标签, 并将标签传递到 last语句。
如果在 last语句中指定了LABEL, 则执行会在遇到LABEL的情况下退出循环, 而不是当前封闭的循环。
使用LABEL的 last语句的Perl语法如下:
last LABEL;
Perl带有LABEL示例的 last语句
use warnings;
use strict;
my ($key, $value);
my %rate = ("shoes" => 550, "boots" => 1200, "jaggi" => 800, "jacket" => 1500);
$value = 0;
print("Please enter an item to know the price:\n");
OUTER: while(<STDIN>){
$key = $_;
chomp($key);
# searching
INNER: foreach(keys %rate){
if($_ eq $key){
$value = $rate{$_};
last outer;
}
}
print("$key is not in our list. We apologise!!\n") if($value ==0);
# result
}
print("$key costs is Rs. $value \n");
输出
Please enter an item to know the price:
jaggi
boots costs is Rs. 800
Please enter an item to know the price:
jeans
jeans is not in our list. We apologise!!
上面的程序以相同的方式工作, 只是它要求用户在找不到匹配项时再次输入搜索键。
使用了两个标签OUTER和INNER。
在foreach循环中, 如果找到匹配项, 我们将退出两个循环, 因为OUTER标签被传递到了 last语句。