Perl脚本编程

Perl脚本编程本文详细介绍了 Perl 脚本的学习笔记 包括编写第一个程序 基本构件 如直接量 标量变量和表达式 控制程序流 if while for 循环 列表与数组操作 文件操作 打开 读取 写入 模

大家好,欢迎来到IT知识分享网。

Perl脚本学习笔记


一、编写你的第一个Perl程序

#!/usr/bin/perl -w #-w 可以报错 print "Hello, World!\n"; 

常用的扩展名是.pl或.plx,运行hello.pl,执行perl hello.pl


二、Perl的基本构件

1.直接量

Perl拥有两种不同类型的标量常量,它们都称为直接量。一种是数字直接量,一种是字符串直接量。
数字直接量都是一些数字,Perl可以接受若干种不同的数字写法。
在这里插入图片描述
给字符串加引号有两种主要方法,一种是使用单引号(’ ‘),一种是使用双引号(” “)。
差别是使用单引号的字符串含义是非常直观的,单引号字符串中的每个字符就是表示它自己的含义。在双引号中的字符串中,Perl要查看是否存在变量名或转义字符。
perl还提供了另一个引号机制,即和q运算符分别代替双引号和单引号。




(I said , "Go then," and he said "I'm gone") q(Tom's kite wedged in Sue's tree) 

2.标量变量

3.表达式和运算符

在这里插入图片描述
字符串运算符
并置运算符用圆点来表示(.)

#!/usr/bin/perl $a="Hello,World"; $b=" Nice to meet you"; $c=$a . $b; print "$c\n"; 
#!/usr/bin/perl $line= "-" x 7 print "$line\n"; 
$counter++; $counter--; 
#!/usr/bin/perl print "What size is your shoe?"; $size=<STDIN>; print "Your shoe size is $size,Thank you"; 
print "What size is your shoe?"; $size=<STDIN>; chomp $size; print "Your shoe size is $size, Thank you"; 

三、控制程序流

1.if 语句

if (condition) { 
       commands; } 
if (condition) { 
       commands1; } else { 
       commands2; } 

多重判断

if (condition1) { 
       commands1; } elsif (condition2) { 
       commands2; } else { 
       commands3; } 

2.while 循环

只要表达式是真的,while循环就会重复执行该代码段

while (condition) { 
       commands; } 

3.for 循环

for (变量;条件;自增自减运算) { 
       commands; } 

明细控制
除了使用语句块、for、while 、if以及其他流控制语句来控制代码块以外,还可以使用Perl语句来控制语句块中的流程。
last语句能够使当前正在运行的最里面的循环块退出。

#!/usr/bin/perl $i=0; while ($i<15) { 
       last if ($i==5); $i++; print "$i\n"; } 
#!/usr/bin/perl for ($i=0;$i<100;$i++) { 
       next if (not $i%2); print "An odd number= $i\n"; } 
OUTER: while ($expr) { 
       INNER: while($expr) { 
       statement; } } 

四、列表与数组

1.列表

列表的语法是用一组括号将一些标量值括起来

(5, 'appel', $x, 3.14); 

qw运算符,列表每个元素用白空间隔开

qw (5 apple $x 3.14); 

范围运算符由一对圆点来表示

#1~10之间的数列 (1..10); 

2.数组

#!/usr/bin/perl -w  #-w 可以报错 @boy=qw(Greg Peter Bobby); @girl=qw(Marcia Jan Cindy); @kids=(@girl, @boy); print "@kids\n"; 
#!/usr/bin/perl -w  @boy=qw(Greg Peter Bobby); print $boy[0];//输出Grep print $boy[1];//输出Peter print $#boy;//输出2 #获得数组的大小 $size=@boy; print $size;//输出3 print scalar(@boy);//输出3 

3.遍历数组

#!/usr/bin/perl -w @boy=qw(Greg Peter Bobby); for($index=0;$index<@boy;$index++){ 
        print "My favorite is $boy[$index]\n" } 
#!/usr/bin/perl -w @boy=qw(Greg Peter Bobby); foreach $b (@boy){ 
        print "My favorite is $b\n" } 
@worlds=split(//,"The quick brown fox"); 

将数组转换成标量使用join函数

$number=join(',',(1..10)); 

4.数组排序

sort函数将一个列表作为它的参数,并且大体上按照字母顺序对列表进行排序,然后该函数返回一个排定顺序的新列表。

#!/usr/bin/perl -w @boy=qw(Greg Peter Bobby); print join(' ',sort @boy); 
#!/usr/bin/perl -w @boy=qw(Greg Peter Bobby); print join(' ',reverse @boy); 

五、文件操作

1.打开文件

open函数用于打开文件,句法如下:

open(filehandle,pathname) || die 
#!/usr/bin/perl -w open(MYFILE, "/home/liuy/Scripts/perl/file.txt") || die close (MYFILE) 

特殊变量 $! ,在字符串上下文中,返回来自你的操作系统的相应出错消息。

#!/usr/bin/perl -w open(MYFILE, "/home/liuye/Scripts/perl/file1.txt") || die "$!"; close (MYFILE) 

2.读取文件

使用文件输入符 < >
若要读取文件句柄,只需要将文件句柄放入尖括号运算符中,将该值赋予一个变量。

#!/usr/bin/perl -w open(MYFILE, "/home/liuye/Scripts/perl/file1.txt") || die "$!"; $line=<MYFILE>; close (MYFILE); print $line; 

3.写入文件

open(filehandle,">pathname") //改写 open(filehandle,">>pathname") //追加 

写入操作

print filehandel LIST 

filehandel是要将数据写入到的文件句柄, LIST是要写入的数据的列表

#!/usr/bin/perl -w open(MYFILE, ">>/home/liuye/Scripts/perl/file.txt") || die "$!"; @contents=qw(this is a cat); print MYFILE @contents; close (MYFILE); 

六、模式匹配

简单的模式匹配运算符m/ /

1.元字符

. 圆点用于匹配除了换行符外的任何单个字符 \ 在字符前面加上一个反斜杠,使它失去“元”的含义 + 用于使前面的字符与后面的字符至少匹配一次 * 前面的字符可以进行 0次或多次匹配 ? 用于使前面的字符进行 0次或一次匹配 .* 用来匹配任何东西 { 
         n,m} 根据需要的具体次数进行匹配,n是匹配的最小次数,m是匹配的最大次数 /x{5,10}/ x至少出现5次,但是不超过1 0/x{9, }/ x至少出现9次,也可能出现更多次 /x{0,4}/ x最多出现4次,也可能根本不出现 /x{8}/ x必须正好出现8

2.字符类

/[^A-Z]/ 匹配不在A-Z的任意字符 

3.分组和选择

当可能的匹配项之间用一个 | 字符隔开时,正则表达式中就出现了选择

#这个字符串包含dogs还是cats if (/dogs|cats/) { 
          print "\$_ contains a pet\n"; } 可以对括号进行嵌套,使一个组中包含另一个组 /(fl|b|fl|cl)og/ 

4.位置通配符

第一个位置通配符是插入记号( ^
与它相对应的通配符是美元符号( $

5.替换

替换运算符 s / / /

s/search/replace/ 

6.连接运算符

连接运算符 = ~
如果要对非 $ _的变量使用匹配运算符和替换运算符,则必须将它们与该变量连接起来

$weight="185 lbs"; $weight=~s/lbs//; 

7.grep函数

#!/usr/bin/perl -w @dogs=qw(greyhound blooshound terrier mutt chihuahua); @hounds=grep /hound/, @dogs; @longdogs= grep length($_)>8, @dogs; print "@hounds\n"; print "@longdogs\n"; 

七、哈希结构

哈希是Perl中的第三种基本数据类型。与数组一样,哈希包含了许多个标量。数组与哈希的差别是:哈希是按照名字来访问它们的标量的,而不是像数组那样使用数字标号进行访问。
哈希元素包含两个部分,即一个关键字和一个。关键字用于标识哈希的每个元素,而值则是与该关键字相关的数据。这种关系称为关键字值对

1.将数据填入哈希结构

$food{ 
          'apple'}='fruit';//关键字是apple,值是fruit $food{ 
          'pear'}='fruit'; 

P e r l有一个特殊的运算符,称为逗号箭头运算符,即 =>。使用=>运算符,同时利用Perl忽略白空间的特性,就能够编写下面这样的哈希结构的初始化代码。

%food=(key1 => 'value1',key2 => 'value2'); 

2.从哈希结构中取出数据

key函数来检索作为列表返回的哈希结构的所有关键字。
若要输出该哈希结构中的所有电影名字,可以使用下面的代码:

foreach $film (keys %Movies){ 
           print "$film\n"; } 

values函数来检索哈希结构中存放的所有值。

foreach $film (values %Movies){ 
           print "$film\n"; } 
@Directors=values %Moves; @Films=keys %Moves; 

3.列表与哈希结构

若要拷贝一个哈希结构,只需要像下面这样将这个哈希结构赋予另一个哈希结构即可:

%New_Hash=%Old_Hash; 

当你将 % Old_Hash置于哈希初始化代码的右边时( Perl通常希望右边是个列表或数组),Perl便将哈希结构转换成一个列表。可以像处理列表那样,将几个哈希结构组合起来并对它进行操作。

%Both=(%First,%Second); %Additional=(%Both,key1 => 'value1',key2 => 'value2' ); 

4.关于哈希结构的补充说明

exists函数可以用于测试哈希结构中是否存在哈希关键字,如果存在,便返回真,否则返回假。

if (exists $Hash{ 
          keyval}) { 
           : } 

delete函数删除单个哈希关键字。

delete $Hash{ 
          keyval}; 

若要从哈希结构中删除所有关键字和值,只需要将哈希结构初始化为一个空的列表即可。

%Hash=(); 

八、函数

在 Perl中,用户定义的函数称为子例程。与 Perl的内置函数一样,用户定义的函数也可以拥有参数,并且可以将值返回给调用者

1.子例程

sub function_name { 
            statement; } #调用子例程 &function (); 或 function (); 

子例程的返回值是子例程中计算的最后一个表达式的值,或者是return语句显式返回的值。

2.参数

若要传递子例程的参数,可以使用下面任何一个语句。

subname (arg1, arg2, arg3); &subname (arg1, arg2, arg3); subname arg1, arg2, arg3; 
sub printargs{ 
            print join(',', @_); } printargs('market', 'home', 'roast'); 

若要像下面这个例子中那样,访问传递过来的各个参数,可以使用数组 @ _上的下标。 $ _ [0] (@_的一个下标)与标量 $ _毫不相干:

sub print_third_argument { 
            print $_[2];//取第三个参数 } 

3.作用域

my操作符,使变量成为函数的专用变量。

sub moonweight { 
            my $weight; ($weight)=@_; return ($weight/1.66667); } 

Perl语句use strict,它能够激活更严格的 Perl,使你能够避免在编程中出现错误。


总结

参考文献:Perl编程24学时教程

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122868.html

(0)
上一篇 2025-10-13 14:26
下一篇 2025-10-13 14:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信