Posted by: Tony.DING | 2011年09月25日

Perl 学习笔记 (1)

1.初识Perl

最近因为上课的原因,在学习Perl语言,一种精致灵活的脚本语言。Perl,1987年由Larry Wall发明,最初的目的是简化unix操作的脚本语言。从一个.pl文件的文件头部便可看出些端倪:

#!/usr/local/bin/perl

这有多像Bash脚本啊,Perl也经常和同为脚本语言的Python拿来比较。当然 现在Perl的功能作用已经被扩展到很多领域了,尤其是网络CGI的编程。在CPAN的库支持下,Perl变得越来越强大~~这些还没学到所以也是后话了。

2.变量

对于一门语言来说,变量声明从某种角度来讲是最重要很基础的。很多人会拿 “Hello world” 作为程序入门,尽管这是很实用,但是hello world 真的是有太多局限性了,会写一个Hello world 基本是 rien。但如果学会一门语言的变量类型及其声明,那真是半只脚跨进门了。

由于Perl是一种灵活的动态语言,其变量类型是很弱的,总体来讲就三种,或者说是数据结构。

  • $Var,这是Perl中最基本的变量,它可以用来表示整数,小数,字符串这些最基本的变量类型,还有个$_,这算是Perl的内置变量,有点像PHP中的一些超级变量。其实PHP就是深受Perl影响的一种语言。
  • @Tab,@声明的是一个table,或者说数组,用简单的一对(  )和,相隔里面可以放$var,也可以存储 @tab嵌套。对Table可以做些pop,push的操作插入删除元素,还可以sort。很像java里的vector容器类,不过要简单得多,灵活得多。遍历table用foreach循环十分方便,根本不用去考虑什么迭代器之类的。
  • %HashTab,% 声明一张哈希表,也就是键值对(Key1,value1,Key2,value2…) 这样的Hash table是很强大的,它的keys和values 分别是table。
可以发现Perl的变量很简单,这样的语言上手也很快。至于Perl支不支持Object Oriented,我目前还不知道。(后经过google发现Perl还是可以OO的,不过用的不多)。

3.灵活性

编写一个 Perl 程序的方法是多种多样的,这也就是所谓多样性吧,Perl黑客们对此有句口号,TIMTOWTDI=There is more than one way to do it. 我在一本叫Modern Perl 的 Tutorial 中,看到了以下一个例子,个人觉得非常典型,故引用之:
我们要写一个很简单的小程序,将一个表里的每个元素都乘以三,我们有以下三个版本。

小菜鸟
@tripled;
$count = @numbers;
for ($i = 0; $i < $count; $i++)
{
$tripled[$i] = $numbers[$i] * 3;
}

Perl 内行
@tripled;
for $num (@numbers)
{
push @tripled, $num * 3;
}

高级 Perl 黑客
@tripled = map { $_ * 3 } @numbers;

高手的程序总是很简洁的完成需要的功能,在最后一段程序中他利用了Perl的map 映射函数,这让我想起来了曾经学过一些的Lisp,这是古老又高级的语言啊。

第一篇到此结束,以后再写些关于Perl的实际应用。

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Categories

Follow

Get every new post delivered to your Inbox.