perl中的控制语句及函数定义

前端之家收集整理的这篇文章主要介绍了perl中的控制语句及函数定义前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_403_8@1. 条件控制语句

@H_403_8@if(条件表达式@H_403_8@)

{

@H_403_8@#语句

}

else

{

@H_403_8@#语句

}

@H_403_8@

given…when结构形式为:

given (标量)

when()  { }

when()  { }

when()  { }

when()  { }

 

given语句的用法为:

#!/usr/bin/perl -w
use 5.010001;
my $m=<STDIN>;
given ($m)
{
when (/[0-9]/) {print "it is a number\n";}
when (/[a-z]/)  {print "it is a letter\n"}
default  {print "\n";}
}
2.  循环控制语句

@H_403_8@(1)while (条件表达式@H_403_8@)

{

@H_403_8@# 循环体语句

}

 (2)until (条件表达式)

{

@H_403_8@# 循环体

}

(3)do

{

@H_403_8@#循环体

@H_403_8@}while(条件表达式@H_403_8@)

(4)foreach标量(标量)

{

@H_403_8@# 循环体

}

@H_403_8@foreach的简单使用实例为:

#!/usr/bin/perl -w

foreach $m (1..10)

{

print "$m\n";

}

 (5)for循环语句与foreach等价

形式为

@H_403_8@for(表达式@H_403_8@;表达式@H_403_8@;表达式@H_403_8@)

@H_403_8@

(6)循环控制的next,last以及redo

next语句用于跳过本次循环,执行下一次循环,last语句用于退出循环,redo语句用于回到本次循环的开始。next与redo 的区别在于next会跳过本次循环。下面是三种语句的使用实例:

#!/usr/bin/perl -w
use 5.01;
my $n;
for($n=0;$n<10;$n++)
{
say "$n";
say "input a command:next,last or redo";
my $com=<STDIN>;
last if $com=~/last/;
next if $com=~/next/;
redo if $com=~/redo/;
}

在上面的程序中,输入last会跳出循环,输入redo会再次打印本次循环的输出,输入next会打印下一个数字。

(7)上面讲到的last仅仅能退出本层循环,如果想要退出多层循环,可以使用带有标签的语句。使用的例子为:

@H_403_8@

#!/usr/bin/perl -w
use 5.01;
my $num;
my $j;
LABEL:for($num=0;$num<10;$num++)
{
for($j=0;$j<$num;$j++)
{
say "input a string";
my $str=<STDIN>;
if ($str=~/stop/)
{
last LABEL;
}
say "you have input: $str";
}
}

在for循环的前面加了LABEL标签,在内层循环中使用last LABEL就可以退出两层循环了。上面的程序中输入stop即可退出循环。

3.   函数的定义及使用

函数的基本形式为

@H_403_8@sub  <函数名@H_403_8@>

{

@H_403_8@# 函数

}

如定义函数

sub hello

{

print “hello world\n”;

}

可以在意表达式中使用子程序名加上&来调用它@H_403_8@,

#! /usr/bin/perl –w
sub hello
{
print “hello world\n”;
}
&hello;

程序中出现@H_403_8@hello,world

下面定义了@H_403_8@guess函数,用循环语句实现猜数字的功能

#!/usr/bin/perl -w
my $n=100;
my $num=int(rand($n));
sub guess{
do {
print "input a number which is in the range of (0,100)";
$number=chmop(<STDIN>);
if ($number == $num){
print "riht\n";
}
elsif ($number < $num){
print "too low\n";
}
else {
print "too high\n";
}
}while (1);
}
&guess;

猜你在找的Perl相关文章