加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 00:10:57 所属栏目:大数据 来源:网络整理
导读:内容目录: 1.能正常写出语句的结构语法;--【骨架】 2.条件写法; --【血肉】 3.应用的场景; --【分工】 一.请列出控制结构的几种语句? 二.请写出这些语句的结构写法? 三.举例说明 请在脑海中过一次。。。 答: 一.结构语句及写法包含: if (...)? elsif {.

内容目录:

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 an";}
case "b" {print "it is bn";}
else {print "nothingn";}
}

[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 (...) {...};?? ?? ? ? ? ? ? ? ? ? ? ? ? ? ?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读