温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Perl基本语法实例,变量,数组,函数,if, for, while

发布时间:2020-07-17 13:32:05 阅读:1154 作者:nxf198609 栏目:开发技术
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>
  1. #!/usr/bin/perl -w  

  2. #########################################################################  

  3. # File Name: test.pl  

  4. #########################################################################  

  5.   

  6. print "hello word \n";  

  7.   

  8. print "---- 变量定义用\$ 符号------\n";  

  9. $a=`echo xxxx`;  

  10. print "$a";  

  11.   

  12. $b='aaaa'.'hhhh';  

  13. $c="bbbb";  

  14. $d="$b"."$c";  

  15. $d.='eeee';  

  16. print "$d\n";  

  17.   

  18. print "d: $d\n";  

  19.   

  20. $bl1 = 1>=0;  

  21. $bl2 = 1>=3;  

  22. print $bl1;  

  23. print $bl2;  

  24.   

  25. print "---- if elsif else 条件判断语句 ----\n";  

  26. $if1=2;  

  27. if($if1 == 1){  

  28.     print "pass\n";  

  29. }elsif($if1 == 2){  

  30.     print "==2\n";  

  31. }else{  

  32.     print "fail\n";  

  33. }  

  34.   

  35. #chomp($in1 = <STDIN>);  

  36. #print "your input: $in1\n";  

  37.   

  38. #if(defined($in2)){  

  39. #   print "1";  

  40. #}else{  

  41. #   print "2";  

  42. #}  

  43.   

  44. print " ------- \@ 符号来定义数组 ------ \n";  

  45. @array = (1,2,3,"4")x4;  

  46. print "$array[1]\n";  

  47. print "$#array\n";  

  48. print "$array[-1] \n";  

  49.   

  50. $xtest="123"x5;  

  51. print "$xtest\n";  

  52.   

  53.   

  54. print "pop push 针对数组的末尾操作 \n";  

  55. print "pop 取出最后一个,返回数组剩下的, push将一个元素添加到末尾 \n";  

  56. print "shift unshift 为 pop push的反向操作,针对数组头\n";  

  57. @array2 = 5..10;  

  58. print "$#array2  ----  $array2[-1] \n";  

  59. pop @array2;  

  60. print "$#array2  ----  $array2[-1] \n";  

  61. pop(@array2);  

  62. print "$#array2  ----  $array2[-1] \n";  

  63.   

  64. print "---------- array3 ----------\n";  

  65. @array3 = 1..3;  

  66. print "$#array3  ----  $array3[-1] \n";  

  67. push @array3,9;  

  68. print "$#array3  ----  $array3[-1] \n";  

  69. push @array3,10...12;  

  70. print "$#array3  ----  $array3[-1] \n";  

  71.   

  72. print "---------- array4 ----------\n";  

  73. @array4 = 1..3;  

  74. print "@array4  ----  $array4[0] \n";  

  75. shift @array4;  

  76. print "@array4  ----  $array4[0] \n";  

  77. unshift @array4,99;  

  78. print "@array4  ----  $array4[0] \n";  

  79. unshift(@array4,'98');  

  80. print "@array4  ----  $array4[0] \n";  

  81.   

  82. print "---------- array5 ----------\n";  

  83. @array5 = qw(eating rocks is wrong);  

  84. $array5 = "right";  

  85. print "@array5 ... $array5  \n";  

  86. print "this is $array5[3] \n";  

  87. print "this is ${array5}[3]\n";  

  88. print "this is $array5"."[3]\n";  

  89. print "this is $array5\[3] \n";  

  90.   

  91. print "--------- for --------------\n";  

  92. for($i=0; $i<10; $i++){  

  93.     print "for: $i\n";  

  94. }  

  95.   

  96. #实际for和foreach是一样的  

  97. #中断循环对比C 的break和continue,Perl分别对应的是 last 和 next  

  98. #Perl中还特有 redo, 调到当前循环的顶端,不进行条件判断就再次执行本次循环  

  99. #next会进入下一次循环,redo会继续执行本次循环  

  100. print "--------- foreach ----------\n";  

  101. @rocks = qw(bedrock slate lava);  

  102. print "before rocks: \n @rocks \n";  

  103. foreach $rock (@rocks){  

  104.         #如果有 redo 应该跳到的位置  

  105.     $rock = "\t$rock";  

  106.     $rock .= "\n";  

  107.     print "new rock: $rock \n";  

  108. }  

  109. print "after rocks: \n @rocks \n";  

  110.   

  111. print "--------- reverse 翻转 ----------\n";  

  112. @reverse1 = reverse 6..9;  

  113. print "@reverse1 \n";  

  114. @reverse2 = reverse @reverse1;  

  115. print "@reverse2\n";  

  116.   

  117. print "--------- sort 排序 -------------\n";  

  118. @sort1 = qw(aaa ccc eee bbb ddd);  

  119. print "@sort1\n";  

  120. @sort1 = sort(@sort1);  

  121. print "@sort1\n";  

  122.   

  123.   

  124. print "--------- context -----------\n";  

  125. print "变量和列表会根据上下文给出不同的值\n";  

  126. print 1+@sort1."\n";  

  127. @rocks = qw(xxx aaa ccc);  

  128. print "I have",@rocks,"rocks!\n";  

  129. #强制转换为标量  

  130. print "I have", scalar @rocks, "rocks!\n";  

  131.   

  132. print "--------- sub ----------------\n";  

  133. sub subtest1{  

  134.     $temp=$a.$b;  

  135.     $temp;  

  136. }  

  137. $a = "1";  

  138. $b = "2zzzzz";  

  139. $c = &subtest1;  

  140. print "c: $c\n";  

  141.   

  142. sub addfunc{  

  143.     $size = @_;  

  144.     print "param size: $size\n";  

  145.     my($num1, $num2);  

  146.     ($num1, $num2) = @_;  

  147.     $num1 + $num2;  

  148. }  

  149.   

  150. $addresult = &addfunc(100,99);  

  151. print "addresult: $addresult\n";  

  152.   

  153. print "-------- 子程序 == 函数 ----\n";  

  154. print "函数参数放在 \@_数组内,可以用shift循环的切出第一个参数\n";  

  155. print "my() 定义局部变量\n";  

  156. print "子程序的返回值就是最后一部的计算值\n";  

  157.   

  158. sub max{  

  159.     my($maxValue) = shift @_;  

  160.     foreach(@_){  

  161.         if($_>$maxValue){  

  162.             $maxValue = $_;  

  163.         }  

  164.     }  

  165.     $maxValue;  

  166. }  

  167. @numset = (100,600,3000,3001);  

  168. $maxValue = &max(@numset);  

  169. print "maxValue: $maxValue\n";  

  170.   

  171.   

  172. sub which_element_is{     

  173.     if(@_ < 2){  

  174.         return "输入参数个数不能小于2";  

  175.     }  

  176.   

  177.     my($what, @array) = @_;  

  178.     my $index = 0;  

  179.     foreach(@array){  

  180.         if($what eq $_){  

  181.         #判断字符串相等不能使用==,只能用eq  

  182.             print "Find this element [$_]: $index\n";  

  183.             return $index;  

  184.         }  

  185.         $index++;  

  186.     }  

  187.     return "can't find this element";      

  188. }  

  189. @names = qw(kevin xiang jie);  

  190. $which_element = &which_element_is("jie", @names);  

  191. print "which_element: $which_element\n";  

  192.   

  193. print "上面的程序都是不严谨语法, 开头添加 use strict 变为严谨语法检测\n";  

  194. print '定义变量时需要用my定义, my $baa = 1;  '."\n";  

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×