`
xiaoer_1982
  • 浏览: 1811664 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Perl语言学习笔记1

阅读更多

1.shell和Perl的区别和联系
perl十足一个万金油,从自身内部就实现了各种系统命令的功能,在效率上高许多,而且有专门的调试工具,支持面向对象,不论是小脚本还是大型应用程序都可胜任。
shell脚本本身只适用于简单的系统管理,个人觉得shell象粘合剂,把各种linux系统命令粘在一起形成脚本,所以你还要学习awk、sed等 等,由于shell多是调用外部程序执行操作,所以效率方面较低,还有就是shell脚本调试起来不方便,所以用shell写500行以上的脚本会很累。
联系:他们都是一种解释性程序设计语言。

2.Perl和C语言一样,一个语句由一个分号结尾。

3.在Perl语言中,变量在使用前不需要申明数据类型,即变量是没有类型的。你可以将一个字符串赋给一个变量,在这之后,你可以将一个数字赋给同一个变量。一个变量是什么类型的,是由对这个变量指定什么样的处理来决定的。通常
是在变量名前面加一个类型修饰符来表明该变量的类型。

4.数据结构
Perl有三种数据结构:单值,数组,关联数组(就是"哈希表")。
1)单值(scalar)变量
单值变量名通常以$符号开始
e.g. $mystr = “Hello world.” ; $mynum = 321;
其中有3种表示字符串的方法,好记的是,它们与shell脚本的规则是一样的。
双引号("):在程序里,Perl会把字符串中变量替换掉。
单引号(’):在 Perl程序中不会做任何特别处理。
反引号(`): Perl会把这个字符串作为shell的命令来执行(作为一个独立的进程),并把结果作为该字符串的结果。

2)列表(数组)变量
列表的大小是动态可扩充的。列表由圆括号(( ))包含的,以逗号(,)分隔的元素组成。每个元素可以通过它在列表中的位置来引用。第一个位置的索引是0。也可以用方括号([])来引用列表中的一部分。
e.g.以下定义了一个四个字符串的列表,并且将这个列表的索引为0的元素(Mon)赋值给单值变量monday.
$monday = ("Mon.","Tus.","Fri.","Sun.")[0];

而 ("Mon.","Tus.","Fri.","Sun.")[1,3];这句的结果也是一个列表——"Mon","Fri"

声明列表通常以@符号开始,并且在使用的时候,使用前缀$或者@来告诉Perl解释器某个变量的类型。e.g.@rev = reverse(@num1234); $num1 = $num1234[0];

Perl提供了一些函数用来处理列表:
sort(LIST) 对LIST排序,返回一个列表
reverse(LIST) 对LIST反序,返回一个列表
join(EXPR,LIST) 返回EXPR和LIST的组合列表
split(PATTERN,EXPR) 返回由PATTERN分隔的EXPR的子列表
push(@ARRAY,LIST) 把列表LIST加到@ARRAY尾部
pop(@ARRAY) 从@ARRAY尾部移去一个元素
unshift(@ARRAY,LIST) 在@ARRAY前面加入列表LIST
shift(@ARRAY) 移去并返回@ARRAY的第一个元素
scalar(@ARRAY) 返回数组的元素数目

3)关联数组变量
Perl提供了一种基于key=>value方式的关联数组。这类数组中,通过key来索引元素的值(value)。这里的key是字符串。关联数组变量名通常以%符号开始,如%myvar,
在关联数组中,用大括号({ })来表示以key来索引元素。
%myhash = (“first”=>”First element”, “second”=>”Second element”,
“third”=>”Third element”);
$secondelement = $myhash{“second”};
在Perl语言内部,通过哈希表来保存关联数组的,通过对key取哈希运算
来定位元素的位置。所以,关联数组又叫哈希表。
Perl提供了一些函数来处理关联数组:
keys(%ARRAY) 返回关联数组%ARRAY的所有的key组成的列表
values(%ARRAY) 返回关联数组%ARRAY的所有的value组成的列表
each(%ARRAY) 每次调用的时候,就返回由一对key和value组成的列表
delete($ARRAY{KEY}) 从数组%ARRAY中删除由key关联的元素

5.输入
想从文件读入时,把文件名作为脚本执行时的参数附在脚本名称后边就可以了。Perl解释器在解释运行脚本的时候,会把该文件打开,并把其中的每一行读入,赋值给变量$_。
你可能写了几个文件名字作为命令行参数,比如:
lines foo bar zap
这意味着脚本lines将文件foo, bar, 和 zap 作为一个已经合并的单个文件来
处理。

6.输出
print 与shell中的printf非常类似

7.条件测试和真值
Perl提供了2套条件测试方法,一套用于数字,一套用于字符串:
比较测试 字符串 数字
相等 eq ==
不等 ne !=
大于 gt >
大于等于 ge >=
小于 lt <
小于等于 le <=
比较,返回-1,0,1
cmp <=>

可以用&& (AND) 和|| (OR) 来组合测试运算。
真值问题在Perl中很灵活。
下面的值作为真值(true)来处理:
1;
("a","b"); #有元素的列表
" "; #空格符 (注意这个)
"hello"; #非空字符串
"00" #这个实际上也是非空字符串
下面的值作为false来处理:
0;
(); # 空的列表
""; # 空字符串
"0"; # 这个也是false!(注意这个)

8.控制结构
Perl有丰富的控制结构。可以用if语句来实现分支结构,while语句来实现循
环结构。除了if和while,Perl还提供了一个foreach语句,大大方便了对数组的
处理。注意,一个程序块的大括号是必须的,这和C语言略有不同。

if语句的格式是:
if(expression)
{
block
}

if(expression)
{
block1
}
else
{
block2
}

while语句的格式如下:
while(expression)
{
block
}
last语句告诉Perl解释器,该语句是循环体中最后执行的语句。执行这条语
句后,将退出该循环体。这个语句和C语言中的break功能类似。
next 语句告诉 Perl 解释器,执行一次新的循环。这个语句和 C 语言中的
continue类似。

在Perl语言中,除了支持和C语言类似的for语句外,还有一个foreach语
句。该语句极大方便了对数组的操作。
foreach 单值变量 ( 列表 )
{
block
}

每次循环的时候,SCALAR 的值是 LIST 中的下一个值,然后执行STATEMENTS语句。

9.过程
Perl也提供过程,方便代码重用。
Perl语言通过下面的格式来定义过程:
sub NAME
{
STATEMENTS;
}
所有的过程都通过列表(数组@_)来传递参数,而过程的返回值可以是单值,也可以是列表。

sub error
{
($message) = @_;
print("<b>ERROR:<b>",
$message,
" \n");
exit(0);
}

10.文件测试操作符
下面是部分常用的文件测试操作符列表:
-r 可读
-x 可执行
-e 存在
-d 是目录
-t 是tty
-T 是文本文件

11.文件管理
Perl语言还提供了对文件I/O操作的强大支持。支持重定向的方式类似,<、 >、 >>和|操作符。
open(FD,FILENAME);
close(FD);
它类似于C语言中的宏常量,作为句柄而存在
"FILE" 打开一个文件FILE,作为数据输入,也可以写做"<FILE"
"> FILE" 打开一个文件FILE,作为输出,如果文件不存在,就创建
">> FILE" 以追加方式打开文件FILE,数据都添加在文件后面
"+> FILE" 以读写方式打开文件FILE
"| CMD" 打开一个到CMD的管道(pipe)
"CMD |" 打开一个以CMD为输入的管道

# 从FILEHANDLE所指向的文件中读入一行
$line = <FILEHANDLE>;
# 从FILEHANDLE所指向的文件中读入整个文件
@lines = <FILEHANDLE>;
在Perl中,用print写文件。Print的第一个可选参数是FILEHANDLE,参见
下面的解释,请注意第一个参数后面,没有逗号(,):
print(FILEHANDLE "your","list","here");

分享到:
评论

相关推荐

    perl个人学习笔记

    个人的perl学习笔记,供大家分享,看看吧,正在学习当中目前

    perl 语言学习笔记

    perl学习笔记 介绍了perl学习的基础笔记,入门学习

    《Perl 语言入门》学习笔记

    《Perl 语言入门》学习笔记

    perl脚本语言学习笔记心得

    这个文档中记录和总结了我学习perl脚本语言的一些经验和初学者需要注意的事情

    Perl语言入门学习笔记

    perl学习笔记,简练易懂,是入门级的极佳教程,也可以当手册用。

    Perl语言入门学习笔记.docx

    Perl语言入门中文学习资料

    Perl语言学习完全笔记

    想学Perl的朋友看一下,内容很全.想学Perl的朋友看一下,内容很全.

    perl学习笔记。。。

    本书是perl的经典入门书籍,介绍了perl中最基本的概念和语法,是perl入门的好书,我向所有想了解或学习perl语言的朋友推荐本书。书中穿插有perl语法形成的历史和原因,使你能充分感受到perl语言的文化,这也是perl...

    Perl学习笔记

    Perl学习笔记,学习perl语言的好书

    perl 学习笔记和心得

    Perl确实是一种非常吸引人的程序语言,而之所以这么引人入胜的原因不单单在于他的功能,也在于他写作的方式,或说成为一种程序写作的艺术。即使你只是每天埋首于程序写作的程序设计师,也不再让生活过份单调,至少你...

    perl学习笔记

    perl是一个 恶心 变态的语言,看了一遍《perl编程入门》整理的笔记,平时工作就指望这些笔记,不想去看书了,perl真的是前一天打代码写好,第二天早上就忘了,所以要多查询自己的笔记!!!! 内容可能笔记凌乱,...

    PERL系统学习教程笔记.zip

    想学习perl脚本语言的可以下载,压缩包有相关的perl教程,很适合自学入门的新手看,包含学习笔记。

    Redis全套学习笔记 (带章节目录) 完整版pdf

    本文是一篇关于Redis全套学习笔记的文章,主要介绍了Redis的基础知识、数据结构、持久化、集群、高可用、性能优化等方面的内容。通过本文的学习,读者可以全面掌握Redis的使用和应用,提高自己的技术水平和实践能力...

    perl and lwp

    初步学习perl lwp网络爬虫的参考资料,学习笔记,很全

    Perl学习资料打包(510M-Rearranged_By_Bob).part1 

    内容包括:Perl语言入门、Perl学习笔记、Perl网络编程、高级Perl编程和Perl常见问题集等等。 Perl学习资料打包(510M-Rearranged_By_Bob).part1  Perl学习资料打包(510M-Rearranged_By_Bob).part2  文件较大,两个...

    关于Python的个人学习笔记

    类似于PHP和Perl语言;(2)Python是交互式语言:这意味着可以在一个Python提示符后直接执行代码;(3)Python是面向对象语言:这意味着Python支持面向对象的风格或代码封装在对象的编程技术;(4)Python是初学者的...

    perl 入门 经典提练

    向所有想了解或学习perl语言的朋友推荐本书。书中穿插有perl语法形成的历史和原因, 使你能充分感受到perl语言的文化,这也是perl流行的原动力。本书行文流畅,各知识点 介绍到位,令人很容易明白,达到入门点睛的...

    MySQL-Notes学习笔记

    这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。 MySQL 对 PHP 有很好的支持,PHP 是很适合用于 Web 程序开发。 MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表...

    PYTHON学习教程md格式

    类似于PHP和Perl语言。 * **Python 是交互式语言:** 这意味着,您可以在一个 Python 提示符 &gt;&gt;&gt; 后直接执行代码。 * **Python 是面向对象语言:** 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

Global site tag (gtag.js) - Google Analytics