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


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";

转载于:https://my.oschina.net/u/2291665/blog/885095

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值