您的位置:首页 > 其它

perl_学习笔记_条件语句和循环语句

2015-07-29 08:08 330 查看
#!/usr/bin/perl -w

print 2**4;

#创建对跟随其后项目的引用符号:\

$variable=5;

$reference=\$variable;

print "\n" . $$reference ."\n" ;

#绑定运算符:=~ 和 !=

#=~:将标量表达式绑定到模式匹配上

#=!:与运算符=~相似,不同的是它的返回值是负数。

#用use integer模块强迫perl使用整数除法

use integer;

print 16/3 ."\n";

#当从数字中连续剥离数位进行两种基数转换时,使用取模运算能减少操作:

$value=257;

while($value){

push @digits , (0..9,a..f)[$value%16];

$value /=16;

}

while(@digits){

print pop @digits;

}

print "\n";

#从整数末端获取数字位的方法,可用:&

print 24 &15 ."\n";

#一元运算符:不将参数放在园括号中时,perl将注入sqrt、defined、eval、return、chdir、rmdir、oct、hex、undef、exists和其他只接受一个标量的函数。

#如果想要在某个特定的十进制位精度上比较浮点数,使用:sprintf函数

#unless语句:当条件为假时才执行相关模块的代码。

#unless(EXPR)BLOCK

#unless(EXPR) BLOCK else BLOCK

#使用foreach变量:

#foreach var(LIST) BLOCK;

#foreach循环中的循环变量回过头去访问表中的实际元素,这意味着如果修改循环变量,这些修改了相应的表元素。

#map函数的工作:map:BLOCK LIST; 或者map:EXPR,LIST;

#PS:map是在表上下文下对BLOCK和EXPR进行计算,所以LIST表中的每个元素都可以在返回表中产生一个或多个元素(包括0个元素)

#------------------------------------Demo-------------------------------------------------

#给数组中的每个元素都乘以2

print "Every Element of Array muls 2 by foreach \n";

@a=(1..10);

foreach $_(@a){$_*=2;}

print join (", ",@a);

print "\n-----------------END---------------------\n";

print "Every Element of Array muls 2 by map \n";

@a=(1..10);

map{$_*=2;} (@a);

print join (", ",@a);

print "\n-----------------END---------------------\n";

#关键字来创建当前值的本地副本。

#grep的使用方法:grep BLOCK LIST;或者grep EXPR,LIST;

#grep函数为list中的每个元素进行BLOCK或者EXPR计算,返回由使表达式为真的元素组成的表。

#PS:在标量环境中,grep返回表达式为真的次数。

#PS:grep中的BLOCK和EXPE都是在标量环境计算的。

#grep和map的不同:grep返回的是子表,使特定准则为真,然而map函数对表中的每个元素的表达式进行求值。

#-------------------------------Demo---------------------------------------------------------

#在主数组中寻找所有大于5的数字

print "Search numbers lg 5 in Array by foreach \n";

@b=(1..13);

foreach $_(@b) {

if($_>5)

{push @c,$_;}

}

print join (", ",@c);

print "\n-----------------END---------------------\n";

print "Search numbers lg 5 in Array by grep \n";

@b=(1..13);

@c=grep{$_>5;} @b;

print join (", ",@c);

print "\n-----------------END---------------------\n";

#next跳到下一个循环重复过程

#last命令结束循环:last expr;

#redo重复循环的当前步骤。

#-----------------------------SWITCH Demo------------------------------------------------------

#使用&&操作符,当第一个操作 对象为真时,才执行第一个对象,通过将$_中的值和用户输入的各种字符串进行比较

# print "\n-------------------------------Start Switch-----------------------------------\n";

# print "Enter Command:";

# while(<>){

# SWITCH:{

# /run/ && do{

# $message="Running\n";

# last SWITCH;

# };

# /stop/ && do{

# $message="Stopped\n";

# last SWITCH;

# };

# /connect/ && do{

# $message="Connected\n";

# last SWITCH;

# };

# /find/ && do{

# $message="Found\n";

# last SWITCH;

# };

# /q/ && do{

# exit;

# };

# DEFAULT: $message="No match.\n";

# }

# print $message;

# print "Enter Command:";

# }

# print "\n-------------------------------End Switch-------------------------------------\n";

#使用eval语句来计算perl代码:eval EXPR 或者 eval BLOCK

#PS:在perl中可以使用两种形式的eval:一种可以执行表达式EXPR;另一种可则执行整块BLOCK。

#上面两种情况,eval返回值都是eval执行代码中的最后一个语句的值:

#-------------------------------------------------------Demo---------------------------------------------------

print "\n-------------------Compute print_Hello---------------------------------\n";

eval "print \"Hello\n\"";

print "\n-------------------End Compute print_Hello------------------------------\n";

#exit语句结束来结束终止程序:

#exit EXPR;

#PS:上面语句返回EXPR(如果指定的话),作为程序的退出码(可以将EXPR设置为0代表成功,为1代表有某种错误,它们是唯一的普遍承认的设置)。如果省略EXPR,则exit返回0。

#---------------------------------------Demo-----------------------------------------------

# print "\n------------------------EXIT START----------------------------\n";

# while(<>){

# chop;

# if($_ eq 'y'){

# print "Please type the letter y\n";

# }else{

# print "Do you always do what you're told?\n";}

# exit;

# }

# print "\n------------------------End EXIT------------------------------\n";

#die函数在结束程序时显示错误消息,工作方式:

#die LIST;

#这个函数将LIST值打印到STDERR且终止程序,返回Perl特殊变量$!的当前值。在eval语句中,错误消息放在特殊变量$@中,然后eval语句结束。

#下面一个例子:试图打开一个不存在的文件(在perl中,将看到die语句几乎一成不变的连接在open语句末端):

print "\n---------------------------die Demo----------------------------------------\n";

die "Cannot open filename\n";
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: