perl 语言学习笔记

1、一个简单地例子 hello ,world 编程基础:

#! /usr/bin/perl
print “Hello,word!\n”

在Linux中用 chmod a+x my_program 来赋予其可执行的权限,或者在chmod 后使用755 来代替a+x 。两种
方法都是告诉系统这个文件是一个程序(可执行的)。
现在你可以如下运行它:
$ ./my_program

第一行是特殊的注释。在Unix 系统中,如果文本的第一行前两个字符是“#!”,接着的就是执行下面文件的程序。在本例中,这个程序是/usr/bin/perl。
#!行和程序的可移植性相关,需要找到每台机器的存放地点。幸运的是,通常都被放在/usr/bin/perl 或/usr/local/bin/perl 中。如果不是这样,则需要找到你自己机器上perl 的存放地点,然后使用那个路径。在Unix 系统中,可能使用如下一行找到perl:
#! /usr/bin/env perl

2、一个有意思的perl程序:
#! /usr/bin/perl
@lines= `perldoc –u –f atan2`;
foreach(@lines){
s/\w<([^>]+)/\U$1/g;
print;
}

3、数字操作符:

Perl 除了提供通常的操作符加(+),减(-),乘(*),除(/)等等之外,还提供了模数运算符(%)。10%3 的值是10 除以3 的余数。两个操作数首先变成它们对应的整数值,如10.5%3.2 转换为10%3后再计算。另外,Perl 中提供了和FORTRAN 类似的指数操作符,C 和Pascal 很希望有类似的能力。这个操作符由两个*号表示,如2**3,表示2 的3 次方,等于8。

双引号字符串中的转义符
符号含义
\n 换行
\r 回车
\t 制表符

\f formfeed
\b 退格
\a 响铃
\e escape(ASCII 中的escape 字符)
\007 任何八进制值(这里是,007=bell(响铃))
\x7f 任何十六进制值(这里是,007=bell)
\cC 一个控制符(这里是,ctrl +c)
\\ 反斜线
\” 双引号
\l 下个字符小写
\L 接着的字符均小写直到\E
\u 下个字符大写
\U 接着的字符均大写直到\E
\Q 在non-word 字符前加上\,直到\E
\E 结束\L,\E 和\Q

          表2-3 数学运算符
举例运算符名表达式的值
5 + $t                  加    5与$ t相加的和
$y - $x                减   $ y与$ x的差
$e * $pi             乘   $ e与$ p i的积
$f / 6 除$ f         除以  6得出的商
24 % 5             求余   数2 4除以5得出的余数( 4)
4 * * 2              取幂   取4的二次方

表2-4 一些带名字的运算符
运算符用法举例结果
i n t                                   i n t(5 . 6 2 3 4)   返回它的参数的整数部分( 5)。
l e n g t h                         l e n g t h ( " n o s e " )  返回它的字符串参数的长度( 4)。
l c                                     l c("ME TO O")  返回它的转换成小写字母的参数(" me too ")
u c                                   u c("hal 9000")  返回与l c相反的参数值("HAL 9000")
c o s                                c o s(5 0)  返回弧度5 0的余弦值( . 9 6 4 9 6 6)
r a n d                              r a n d(5)  返回从0到小于该参数值之间的一个随机数字。如果该参数被省略,则返回0至1之间的一个数字

表3-1 数字关系运算符
运算符举例说明
= =                                              $x == $y         如果$ x等于$ y,则为真
>                                                 $x > $y            如果$ x大于$ y,则为真
<                                                 $x < $y            如果$ x小于$ y,则为真
>=                                              $x >= $y           如果$ x大于或者等于$ y,则为真
< =                                             $x <= $y           如果$ x小于或者等于$ y,则为真
! =                                              $x != $y            如果$ x不等于$ y,则为真

表3-2 字母关系运算符
运算符举例说明
e q                                 $s eq $t           如果$ s等于$ t,则为真
g t                                  $s gt $t             如果$ s大于$ t,则为真
l t                                   $s lt $t              如果$ s小于$ t,则为真
g e                                $s ge $t            如果$ s大于或者等于$ t,则为真
l e                                 $s le $t             如果$ s小于或者等于$ t,则为真
n e                               $s ne $t            如果$ s不等于$ t,则为真

 

表3-4 逻辑运算符一览表
运算符替代名举例分析
& &    a n d        $s && $t 只有当$ s和$ t都是真时,才是真
$q     and            $p 只有当$ q和$ p都是真时,才是真
| |       o r        $a || $b 如果$ a或$ b是真,则为真
!          n o t          ! $m 如果$ m不是真,则为真
4、字符串操作符:

字符串可由. 操作符连接(是的,只是一个点) 。它不会改变任何字串,就像2+3 不会改变2 或3 一样。串联之后的字符串
可供以后使用:
“hello”. “world” # 同于“helloworld”
“hello”. ‘’. “world”#同于“hello world”
‘hello world’. “\n” #同于“hello world\n”

一个特殊的操作符是字符串重复操作符(string repetition operator),由小写的字母x 表示。这种操作能把操作符左边字符串
重复操作符右边数字那么多次:
“fred”x 3 # “fredfredfred”
“barney”x (4+1) # “barney”x 5, “barneybarneybarneybarneybarney”
5 x 4 #实际上是“5”x 4, “5555”

5、perl 内嵌的警告:

当程序中包含可能的错误时,可以要求Perl 警告你。运行程序时,可以在命令行中使用–w 这个参数把警告打开:
$ perl–w my_program
或者,如果一直都需要警告(warning),可以在#! 这一行加上-w,如:
#! /usr/bin/perl –w

6、标量变量:

变量是保存一个或多个值的容器,变量的名字在整个程序中保持不变,但其包含的值可以变化。

标量变量可以存放一个标量值。标量变量的名字由一个美圆符号($)后接Perl 标识符:由字母或下划线开头,后接字母,数字,或者下划线。或者说由字母,数字和下划线组成,但不能由数字开头。大小写是严格区分的:变量$Fred 和变量$fred
是不同的。任意字母,数字,下划线都有意义,如:
$a_very_long_variable_that_ends_in_1
和变量:
$a_very_long_variable_that_ends_in_2
是不同的。
标量变量在Perl 中由$开头。

7、标量赋值:

标量变量最通常的操作是赋值:将值赋给变量。Perl 中的赋值符是等号(和许多语言类似),将等号右边的值赋给等号左边
的变量:
$fred = 17; #将17 赋给变量$fred
$barney =‘hello’; #将五个字母的字符串‘hello’赋给$barney

$barney = $fred + 3;# 将$fred 的值加上三赋给$barney (20)
$barney= $barney*2;#将变量$barney 乘2 再赋给$barney (40)
注意最后一行中$barney 变量使用了2 次:一次从中取值(等号右边)一次作为赋值的对象(等号左边)。这是合法的,安
全的,且普遍使用。

像$fred=$fred+3(同一个变量在赋值符两边出现)这样的表达式在Perl 中经常出现(同C 和Java 类似),因此Perl 提供了
一种简便的替代方法:二元赋值操作符。几乎每一个二元操作符都有一个等价的二元赋值形式:由这个符号后接等号组成。
例如,下面两行是等价的:
$fred = $fred + 5; #没有用二元赋值操作符
$fred+=5; #利用二元赋值操作符
下面的也是等价的:
$barney = $barney*3;
$barney*=3;
上述两例中,变量借助自身而非别的变量来改变自身的值。

另一个常用的赋值操作符是字符串连接符号(.);其赋值形式为(.=):
$str = str . “”; #$str 后接空格
$str .= “”’; #同上

 8、条件为假的情况:

数字0为假。
• 空的字符串(“”)和字符串“0”为假。
• 未定义值u n d e f为假。
• 其他东西均为真。

9、控制语句Perl 练习小例子(自己写的)

例1:

#!/usr/bin/perl -w
$counter=0;
while($counter<10){
print "this number is still lower than 10:$counter\n";
$counter+=2;
}

for($i=0;$i<=100;$i+=5){
 last if($i==50); #last能够提前终止循环条件,而不用判断for循环的终止条件;
 print "i is now $i\n";
}  
for($i=0;$i<=100;$i+=1){
 next if($i%2); #next 重新将循环条件传回顶部,接着进行下一个循环,直到循环结束;
 print "An old number is :$i\n";
}    
OUTER:for($i=0;$i<=100;$i++){
 INNER: for($j=0;$j<=100;$j++){
  if($i * $j == 140){
  print "$i and $j is 140.\n";
  last OUTER;
 }
}
}

 例2:

#!/usr/bin/perl -w
  print "hello,world!\n";
  $num=99999;
  $area=3.14*($num**2); #**2表示某一值得2次幂
  print "$area\t$num\n";
  $char="*" x 50;
  print "$char\n";
  print int(rand(10));
  print "\n";
  print cos(30);
  print "\n";
  print "please input a num :";
  $size=<STDIN>; #从键盘输入一个参数值
  chomp $size;  #删除参数结尾处的自动换行符
  print "my shoes size is $size.\n";
  

例3:

#!/usr/bin/perl -w
@alan=qw(apple ora pine purple bai alan job bob andy oracle);
  print "@alan"; # 输出数组alan的元素
  print "\n";
  print "最后一个下标是:";
  print "$#alan"; # 输出数组alan的最后一个下标值;
$size=@alan; #将数组alan的元素数赋给$size;
  print "\n";
  print "一共有的元素数:";
   print "$size\n";
($bai)=@alan; #将数组alan的第一个元素赋给$bai;
  print "\n";
  print "$bai";
  print "\n";
  print scalar(@alan);#scalar函数强制上下文,返回数组alan的元素个数;
  print "\n";
  print scalar(localtime);#返回当前系统时间;
  print "\n";
foreach $meta(@alan){ #将数组alan的各个元素赋给$meta
  print "I would like a meta of $meta\n";
  }
@lines=qw(this is my first reverse);
  print join (' ', reverse @lines);#reverse 是一个倒序输出函数;join函数和split函数刚好相反,
                  #join是将数组转换成字符串,而split函数是将字符串转换成数组;
  print "\n";
  print "please input a string :";
while (<STDIN>){#从键盘输入字符串
 ($fei)=split(/ /,$_);#使用split函数将标量转换成数组,这里$_接收的是从键盘输入的字
                      #符串的第一个字符串,其他的都丢弃;
 print "the first character is $fei\n";
}

 @message="This is my first join";
print "The string \"$message\" consists of:",
   join('-',split(//,$message)); #标量转换成数组的方法之一是使用split函数。
                                    #用数组来创建一个标量,也就是进行split的反向操作,可以使用join函数

 例4:

#!/usr/bin/perl -w
#实现对文件的读写操作:
open (MYFILE,"D:/perl/open") || die;
@line=<MYFILE>;
print @line;
open (ALAN,">>D:/perl/open.txt") || die "$!\n";  #>>是追加到文件的末尾;>是覆盖原来的内容;文件句柄最好使用大写;
#print ALAN "I am a worker!\nI will try my best to work !"; #使用print 函数将要输入的内容list写出来!
#binmode (ALAN);#标记为二进制文件;当打开的文件时二进制的时候必须标记,应该在文件句柄打开之后和对它进行输入输出
#之前使用binmode
print ALAN <@line>; #复制文件open中的内容到open.txt
close MYFILE;
close ALAN;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值