流程控制程序
perl中也有C语言中if,while等流程控制程序,但是细节上还是
有所不同,另外perl中还存在unless和until一些语句。还有就是perl中
是没有switch语句的.
一 if语句
与C语言中不同的有如下几点:
1。 perl中采用elsif而不是C中的else if
2。 perl中的真假情况如下
数字0为假。
空的字符串(“”)和字符串“0”为假。
未定义值undef为假。
其他东西均为真。
3。 特殊的if表达式。。如果在i f语句块中只有一个表达式,那么该表达
式实际上可以放在i f语句的前面。
例如 if() {$a=1};与$a=1 if();是相同的。
二 unless语句
unless语句是与if语句起着相反的作用。
例如 if($a>5)与 unless(!$a>5)是相同的意思.
三 until语句
首先看一个例子
for($a=0;$a<0;$a++)
{
until($a==3)
{ print "$a/n" unless($a>5);
$a++;
}
}
until的意思就是直到a=3才执行后面的语句.
四 循环中的控制语句
last----break语句能够使当前正在运行的最里面的循环块退出
while($i<15)
{
last if($i==5);
$i++;
}
或者
for($i=0;$i<50;$i++)
{
if($i=18)
{
last;
}
}
next----continue语句使得控制权被重新传递给循环的顶部,同时下一个
循环的重复运行则开始进行
for($i=0;$<100;$i++)
{
next if(not $i%2)
print "even number"
}
redo其含义是重复此次循环,即循环变量不变,回到循环起始点,但要注意,
redo命令在do循环中不起作用。
五 针对列表(数组)每个元素的循环:foreach
其语法如下:
foreach localvar (listexpr) {
statement_block;
}
例:
foreach $word (@words) {
if ($word eq "the") {
print ("found the word 'the'/n") ;
}
}
注:
(1)此处的循环变量localvar是个局部变量,如果在此之前它已有值,则循环后仍
恢复该值。
(2)在循环中改变局部变量,相应的数组变量也会改变,如:
@list = (1, 2, 3, 4, 5);
foreach $temp (@list) {
if ($temp == 2) {
$temp = 20;
}
}
此时@list已变成了(1, 20, 3, 4, 5)。
perl中也有C语言中if,while等流程控制程序,但是细节上还是
有所不同,另外perl中还存在unless和until一些语句。还有就是perl中
是没有switch语句的.
一 if语句
与C语言中不同的有如下几点:
1。 perl中采用elsif而不是C中的else if
2。 perl中的真假情况如下
数字0为假。
空的字符串(“”)和字符串“0”为假。
未定义值undef为假。
其他东西均为真。
3。 特殊的if表达式。。如果在i f语句块中只有一个表达式,那么该表达
式实际上可以放在i f语句的前面。
例如 if() {$a=1};与$a=1 if();是相同的。
二 unless语句
unless语句是与if语句起着相反的作用。
例如 if($a>5)与 unless(!$a>5)是相同的意思.
三 until语句
首先看一个例子
for($a=0;$a<0;$a++)
{
until($a==3)
{ print "$a/n" unless($a>5);
$a++;
}
}
until的意思就是直到a=3才执行后面的语句.
四 循环中的控制语句
last----break语句能够使当前正在运行的最里面的循环块退出
while($i<15)
{
last if($i==5);
$i++;
}
或者
for($i=0;$i<50;$i++)
{
if($i=18)
{
last;
}
}
next----continue语句使得控制权被重新传递给循环的顶部,同时下一个
循环的重复运行则开始进行
for($i=0;$<100;$i++)
{
next if(not $i%2)
print "even number"
}
redo其含义是重复此次循环,即循环变量不变,回到循环起始点,但要注意,
redo命令在do循环中不起作用。
五 针对列表(数组)每个元素的循环:foreach
其语法如下:
foreach localvar (listexpr) {
statement_block;
}
例:
foreach $word (@words) {
if ($word eq "the") {
print ("found the word 'the'/n") ;
}
}
注:
(1)此处的循环变量localvar是个局部变量,如果在此之前它已有值,则循环后仍
恢复该值。
(2)在循环中改变局部变量,相应的数组变量也会改变,如:
@list = (1, 2, 3, 4, 5);
foreach $temp (@list) {
if ($temp == 2) {
$temp = 20;
}
}
此时@list已变成了(1, 20, 3, 4, 5)。