设为首页 收藏本站
查看: 742|回复: 0

[经验分享] perl语法-2

[复制链接]

尚未签到

发表于 2017-5-17 09:47:58 | 显示全部楼层 |阅读模式
  声明:本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
1.1   如果非真unless


表示如果非真,即:如果条件表达式不为真。
语法一:
unless(条件表达式) {
条件表达式为假执行的语句块;
}
也可以写成:
条件表达式为假执行的语句块unless (条件表达式);
范例:
#perl0-5.pl
#%为除余操作符
$x=6;
unless($x%2){
print “x是偶数\n”;
}
print “x是偶数\n” unless($x%2);
输出结果为:
x是偶数
x是偶数
语法二:
unless(条件表达式)
{
条件表达式为假时执行的语句块;
}else{
条件表达式为真时执行的语句块;
}
范例:
#perl0-6.pl
#%为除余操作符
$x=9;
unless($x%2){
print “x是偶数\n”;
}
else{
print “x是奇数\n”;
}
输出结果为:
x是奇数
1.2   更简洁的控制方式

1  
2  
3  
4  

4.1  
4.2  
4.3  

4.3.1  替代if-else结构的三目操作符?:

?: 操作符可以替代if-else结构,语法格式如下:
条件表示式?表达式1:表达式2
表示如果条件表示式为真则求表达式1的值,否则求表达式2的值。
范例:
#perl0-7.pl
#%为除余操作符
$x=9;
$x%2?print "x是奇数\n":print "x是偶数\n";
输出结果为:
x是奇数
4.3.2  替代if结构的&&

&&可替代if结构,语法格式如下:
条件表达式 && 条件表达式为真时执行的语句块
范例:
#perl0-8.pl
#%为除余操作符
$x=8;
$x%2&& print "x是奇数\n";
因为8不是奇数,所以print语句不会执行,无输出结果。
1.  
2.  
3.  

1.  
2.  

4.3.3  替代unless结构的||

||可替代unless结构,语法格式如下:
条件表达式 || 条件表达式为假执行的语句块

#perl0-9.pl
#%为除余操作符
$x=8;
$x%2|| print "x是偶数\n";
因为8是偶数,所以输出结果如下:
x是偶数
1.  循环控制

  Perl循环控制很丰富,其中某些控制语法在处理列表和数组方面相当实用和高效。
1    
2    
3    
4    
5    
1    
2    
3    
4    
5    

5.1   while

语法一:
while(条件表达式) {
语句块;
}
范例:
#perl0-10.pl
#计算1到10的连乘结果
$x=1;
$jg=1;
while($x<=10)
{
$jg=$jg*$x;
$x++;
}
print “$jg\n”;
输出结果如下:
3628800
语法二:
语句块while(判别运算式);
范例:
#perl0-11.pl
#计算1到10的连乘结果
$x=1;
$jg=1;
{
$jg*=$x;
$x++;
} while($x<=10)
print “$jg\n”;
请注意$jg*=$x这种写法,学过C语言的都知道:
$jg*=$x与$jg=$jg*$x的结果一样,但编译效率更高。
输出结果如下:
3628800
5.2   do while

与while相比,do while保证语句块至少执行一次。
语法:
do
{
语句块;
}while(条件表达式)
范例:
#perl0-12.pl
#求和1到100
$jg=0;
$x=1;
do{
$jg+=$x;
$x++;
}while($x<=100);
print "$jg\n";
输出结果如下:
5050
5.3    until

until 直到...才终止循环
语法:
until(条件表达式)
{
语句块;
}
也可以写成: 语句块 until(条件表达式);
范例:
#perl0-13.pl
#从1开始求和,直到和大于1000终止
$jg=0;
$x=1;
until ($jg >1000)
{
$jg+=$x;
$x++;
}
print "1->$x:";
print "$jg\n";
输出结果如下:
1->46:1035
5.4   do …until

do …until直到...才终止循环
语法:
do{
语句块;
}until (条件表达式);
范例:
#perl0-14.pl
#从1开始求和,直到和大于1000终止
$jg=0;
$x=1;
do
{
$jg+=$x;
$x++;
} until ($jg >1000);
print "1->$x:";
print "$jg\n";输出结果如下:
1->46:1035
5.5   for

循环
语法一:
for (初始表达式;条件表达式;循环过程运算式)
{
语句块;
}
范例一:
#perl0-15.pl
#从1开始求和,直到和大于1000终止
$jg=0;
$x=1;
for ($jg=0,$x=1; $jg <=1000;$x++)
{
$jg+=$x;
}
print "1->$x:";
print "$jg\n";
输出结果如下:
1->46:1035
语法二:
每次循环依次将数组变量的元素指定给标量
for  标量(数组变量)
{
语句块;
}
范例:
#perl0-16.pl
#从数组中挑出奇数
@myarr=(2,5,7,10,23,33,18);
print"奇数如下:\n";
for $num(@myarr)
{
  $num%2&&print "$num  ";
}
print"\n";
输出结果如下:
奇数如下:
5  7  23  33
语法三:
每次循环依次将数组变量的元素指定给预定义变量$_
for  (数组变量)
{
读取$_,处理数组的相关语句块;
}
范例:
#perl0-17.pl
#从数组中挑出奇数
@myarr=(2,5,7,10,23,33,18);
print"奇数如下:\n";
for (@myarr)
{
  $_%2&&print "$_  ";
}
print"\n";
输出结果如下:
奇数如下:
5  7  23  33
5.6   foreach

每次循环依次将数组变量的元素指定给标量
语法一:
foreach  标量(数组变量)
{
语句块;
}
如果把$variable变量省略的话,就会将数组@array的元素一一指定给$_这个内定的输出变量.
范例:
#perl0-18.pl
#从数组中挑出奇数
@myarr=(2,5,7,10,23,33,18);
print"奇数如下:\n";
foreach $num(@myarr)
{
  $num%2&&print "$num  ";
}
print"\n";
输出结果如下:
奇数如下:
5  7  23  33
语法二:
每次循环依次将数组变量的元素指定给预定义变量$_
foreach  (数组变量)
{
语句块;
}
范例:
#perl0-19.pl
#从数组中挑出奇数
@myarr=(2,5,7,10,23,33,18);
print"奇数如下:\n";
foreach (@myarr)
{
  $_%2&&print; #使用无参数的print表示输出$_
  print" ";
}
print"\n";
输出结果如下:
奇数如下:
5  7  23  33
5.7   last退出循环

退出循环
语法:
last
范例:
#perl0-20.pl
#从1开始累加,直到和大于500为止
$x=1;
$jg=0;
while (1)
{
      $jg+=$x;
$jg>500&&last;#求和>500退出循环
$x++;
 }
print"sum(1:$x)=$jg\n";
输出结果如下:
sum(1:32)=528
5.8    next终止本次循环

终止本次循环,进入下一循环。
语法:
next
范例:
#perl0-21.pl
#求出1-100内的奇数之和
foreach ($x=1,$jg=0;$x<=100;$x++){      
      $x%2||next;#如果是偶数则结束本次循环,不累加,继续下次循环
      $jg+=$x;
      $x++;
 }
print "$jg\n";
 

 
 
 
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-378376-1-1.html 上篇帖子: Perl Language(VII) Web Programming 下篇帖子: perl-lwp笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表