内容目录:
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;
-------------------------------------------------------------
[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 (...) {...} ;