加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl 语言学习笔记

发布时间:2020-12-15 23:59:43 所属栏目:大数据 来源:网络整理
导读:1、一个简单地例子 hello,world 编程基础: #! /usr/bin/perl print “Hello,word!n” 在Linux中用 chmod a+x my_program 来赋予其可执行的权限,或者在chmod 后使用755 来代替a+x 。两种 方法都是告诉系统这个文件是一个程序(可执行的)。 现在你可以如下

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 字符)
07 任何八进制值(这里是,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 worldn”

一个特殊的操作符是字符串重复操作符(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:$countern";
$counter+=2;
}

for($i=0;$i<=100;$i+=5){
?last if($i==50); #last能够提前终止循环条件,而不用判断for循环的终止条件;
?print "i is now $in";
}??
for($i=0;$i<=100;$i+=1){
?next if($i%2); #next 重新将循环条件传回顶部,接着进行下一个循环,直到循环结束;
?print "An old number is :$in";
}????
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 "$areat$numn";
??$char="*" x 50;
??print "$charn";
??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 "$sizen";
($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 $metan";
??}
@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 $fein";
}

?@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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读