perl基础知识05【数据流控制】

来源:互联网 发布:数据统计分析的要求 编辑:程序博客网 时间:2024/05/18 22:54

内容目录:

1.能正常写出语句的结构语法;--【骨架】

2.条件写法; --【血肉】

3.应用的场景; --【分工】


一.请列出控制结构的几种语句?

二.请写出这些语句的结构写法?

三.举例说明


请在脑海中过一次。。。

答:

一.结构语句及写法包含:

if (...)  elsif {...} else{...};

while(...) {...};

do {...} while (...);                   #注意分号是在while后面

until (...) {...} ;                        #也可以写成do {...} until (...);注意until并非循环结构!

unless (...) {...};                     #非循环结构

for (...) {...};

foreach $field (...) {...};

$a>8?print "yes" :print "no";   #称作三元运算符

switch                                  #此写法在perl6中生效,perl5中请在文件开头添加入use Switch;

-------------------------------------------------------------


#if (...)  elsif {...} else{...},注意花括号后面不跟”;“号;

[oracle@localhost ~]$ perl -e'
$a=0;
if($a>1)
{print "$a";}
elsif($a==1)
{print "\$a is 1";}
else
{print "\$a is less than 1";}
'
$a is less than 1


-------------------------------------------------------------

#while(...) {...};

[oracle@localhost ~]$ perl -e'
$a=8;
while($a>1) {print $a."\n";$a--;}
'
8
7
6
5
4
3
2

-------------------------------------------------------------

#do { ...} while(...);

[oracle@localhost ~]$ perl -e'
$a=8;
do {print $a;$a--;} while($a>8);
'
8

-------------------------------------------------------------

#until(...) {...};until后面的条件为假时执行为真时停止执行;

[oracle@localhost ~]$ perl -e'
$a=8;
until($a<2){print $a;$a--}'
8765432

-------------------------------------------------------------

#unless,这个用法可以在条件理解上加个不,比如下面的条件加个不变成除非$a不小于2那么执行后面语句;

[oracle@localhost ~]$ perl -e'
$a=8;
unless($a<2){print $a;$a--};'
8

-------------------------------------------------------------

#for,这用法与C语方的无2样;

[oracle@localhost ~]$ perl -e'
> for($a=1;$a<=8;$a++)
> {print $a;}
> '
12345678

-------------------------------------------------------------

#foreach ,用在数组或HASH,针对是同类型的多个数据;

[oracle@localhost ~]$ perl -e'
> @a=("a","b","c");
> foreach $field (@a)
> {print $field."\n";}
> '
a
b
c

-------------------------------------------------------------

#三元运算符,其实它等价于if(..) {...}else {...}的用法;

[oracle@localhost ~]$ perl -e'
> $a=8;
> $a>2?print "yes":print "no";
> '
yes


#switch写法,在perl5中添加入语句use Switch;

[oracle@localhost ~]$ cat switch
#!/usr/bin/perl
use Switch;
print "...:";
chomp($chars=<STDIN>);
switch($chars){
case "a" {print "it is a\n";}
case "b" {print "it is b\n";}
else {print "nothing\n";}
}

[oracle@localhost ~]$ ./switch
...:b
it is b
[oracle@localhost ~]$
[oracle@localhost ~]$ ./switch
...:a
it is a
[oracle@localhost ~]$ ./switch
...:asdfdsaf
nothing

-------------------------------------------------------------

二.条件写法

(1).&&  ||  (运算符将在后面讲解)

(2).last,next

(3).redo

(4).continue


答:

(1)这里只取&&与||进行讲解,这个比较简单,忽略;

(2)last中断整个循环退出,next是退次本次循环,然后重新下一轮的循环;这里就不举例;

(3)redo用得较少与goto用法类似

[oracle@localhost ~]$ perl -e'
loop_label: {                #标签标识与位置格式 **: { ....},本段中的loop_label:  { ....  }
chomp($a=<STDIN>);
while($a ne  "yes")
{redo loop_label;}
}'

(4)continue用法

[oracle@localhost ~]$ perl -e'
> for ($a=1;$a<8;$a++)
> {print $a;}
> '
1234567


[oracle@localhost ~]$
[oracle@localhost ~]$
[oracle@localhost ~]$ perl -e'
> $a=1;
> while($a<8)
> {print $a;}
> continue {$a++;}
> '
1234567

上面的两种用法结果是等价的,continue充当了自动计数器的功能;


三.应用场景

说明:由于水平有限,待日后完善;

第1类:选择判断

$a>8?print "yes" :print "no";  

if (...)  elsif {...} else{...};

switch    


第2类:循环类型

while(...) {...};

do {...} while (...);                             

for (...) {...};

foreach $field (...) {...};


第3类:

until (...) {...} ;                      

unless (...) {...};  

                            
原创粉丝点击