#!/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";
                









