Perl5学习笔记-第一章-概述
2010-07-03 14:21:08 阿炯

一、Perl是什么?
二、Perl在哪里?
三、运行
四、注释

一、Perl是什么?
Perl是Practical Extraction and Report Language的缩写,它是由Larry Wall设计的,并由他不断更新和维护,用于在UNIX环境下编程。

Perl具有高级语言(如C)的强大能力和灵活性。事实上你将看到,它的许多特性是从C语言中借用来的。与脚本语言一样,Perl不需要编译器和链接器来运行代码,你要做的只是写出程序并告诉Perl来运行而已。这意味着Perl对于小的编程问题的快速解决方案和为大型事件创建原型来测试潜在的解决方案是十分理想的。

Perl提供脚本语言(如sed和awk)的所有功能,还具有它们所不具备的很多功能,还支持sed到Perl及awk到Perl的翻译器。

简而言之,Perl象C一样强大,象awk、sed等脚本描述语言一样方便。是一种折衷但流行的脚本语言,它借用了C编程语言、awk、sed、shell脚本语言和许多其他地方的语法和命令。广泛的命令和功能以及添加扩展的能力使其非常适合快速原型设计、系统实用程序、软件工具、系统管理任务、数据库访问、网络和Web编程等任务。

二、Perl在哪里?
Perl通常位于/usr/local/bin/perl或/usr/bin/perl中。你可以在Internet用匿名FTP免费得到它。安装过程为:
(1)解压:
$gunzip perl-5.x.tar.gz
$tar xvf perl-5.x.tar.gz

(2)配置:
$Configure

(3)编译:
$make
$make test
$make install

(3)放置:
将编译生成的可执行文件拷贝到可执行文件通常所在目录,如:
$copy /usr/local/bin/perl

注:这需要系统管理员权限。

三、运行
用文本编辑器编辑好你的Perl程序,加上可执行属性:$chmod +x 就可以执行了:$./。如果系统提示:"/usr/local/bin/perl not found",则说明你没有安装成功,请重新安装。

注:你的程序的第一行必须为#!/usr/local/bin/perl(perl所在位置)。

四、注释:
注释的方法为在语句的开头用字符#,如:
# this line is a comment

注:建议经常使用注释使你的程序易读,这是好的编程习惯。

Perl是一种通用编程语言,最初开发用于文字处理和现在使用的范围广泛,包括系统管理,网络开发,网络编程,GUI开发任务等很多方面的应用。

你应该已经知道

如果你有C或UNIX的Shell的基本知识,那么Perl是很容易学习。如果这是你的第一语言学习,那么你可能需要一到两个星期熟悉Perl。

Perl是什么?

Perl是一个稳定,跨平台的编程语言。
Perl代表实际提取和报表语言。
它用于在公营和私营机构的关键任务项目。
Perl是开源软件,根据其艺术授权许可,或在GNU通用公共许可证(GPL)。
Perl是由Larry Wall创建的。
在1987年Perl1.0发布新闻组alt.comp.sources中。
PC杂志评选的Perl开发工具类别获得1998年技术卓越奖入围。
Perl被列在牛津英语词典(Oxford English Dictionary)。

支持的操作系统

Unix/Linux系统
Macintosh - (OS 7-9 and X) see The MacPerl Pages.
Windows - see ActiveState Tools Corp.
VMS
更多其它...

Perl的特性

Perl从其他语言中吸取优点特性,如C,AWK,SED,SH,和BASIC中最好的功能.
Perl环境数据库的集成接口(DBI)的支持第三方数据库,其中包括Oracle(甲骨文),Sybase,Postgres和MySQL等。
Perl中使用HTML,XML和其他标记语言。
Perl 支持Unicode。
Perl解决Y2K问题。
Perl支持的过程程序和面向对象编程。
通过XS或SWIGPerl接口与外部C/C++库。
Perl是可扩展的。有超过500个第三方模块可用,从Perl综合典藏网 (CPAN)。
Perl解释器,可以嵌入到其他系统。

Perl和Web

Perl是最流行的Web编程语言,由于它的文字处理能力和快速的开发周期。
Perl被广泛地称为“管带互联网”。
Perl的CGI.pm模块,Perl标准分发的一部分,处理简单的HTML表单。
Perl可以处理数据加密的网络,包括电子商务交易。
Perl可以嵌入到Web服务器,以加快处理高达2000%。
mod_perl 的Apache Web服务器允许嵌入一个Perl解释器。
Perl的DBI包,使网络数据库的集成更容易。

Perl编译还是解释?

解释,这意味着你的代码可以运行创建不可移植可执行程序无需要编译。

传统程序需要编译器转换成机器语言程序。当您运行一个Perl程序,它先编译成字节码,然后转换成机器指令(程序运行)。因此,它是不完全一样,这是“严格”没有中间表示解释。也不是像大多数版本的C或C++,它被编译成直接依赖于机器的格式。随着Python和Awk的发展,它是介于两者之间。

Perl语法的基本规则

Perl脚本第一行使用#!。脚本程序后缀名一般为".plx"或".pl",运行时使用perl NAME.plx即可。例如1.plx内容如下:
#!/usr/bin/perl
print "hello world\n"

执行该脚本:
shell> perl 1.plx

注释。Perl只支持"#"注释,所以只支持单行注释、行内到结尾注释
# comment
print "hello world\n" # comment

Perl脚本中除了最后一行,每行都需要以";"结尾,除非是注释行

Perl中不需要对变量进行声明,可以直接赋值、引用
$var=12;
print $var;

use指定使用某个版本的perl,如5.10版本。注意,use中是5.010而不是5.10,use 5.10会被perl认为是5.100版
use 5.010;

如果指定更细致的小版本号,如5.10.1版,则:use 5.010001;。如果非要写成5.10呢,可在其前加上字符'v':
use v5.10;

最好都加上use utf8语句
use utf8;

最好在每个Perl程序中加上use strict语句,这在后面写稍大一点的Perl程序基本上是一种规范;该功能让Perl编译器以严格的态度对待Perl程序,如果定义了变量却未使用过,或者引用了未定义过的变量,都会编译错误。
use strict;

可以加上warning信息进行调试
use warnings;

或者perl -w,或者在Perl脚本中:
#!/usr/bin/perl -w

从5.12版本开始,使用相应的版本号即可默认开启strict与warnings:use v5.12;

Perl中可以通过反引号来执行操作系统中的命令
$var=`date +"%F %T"`
print $var

Perl中调用自带的内置函数时,可以使用括号传递参数,也可以省略括号;例如调用print函数:
print("hello world\n");
print "hello world\n";

Perl中的ENV:Perl可以通过ENV这个hash直接访问操作系统的环境变量

print $ENV{PATH};    # 输出操作系统的PATH环境变量

如果Perl想访问操作系统中某个变量,可以直接在操作系统中设置,然后通过Perl访问:
$ myvar=2;export myvar;
print $ENV{myvar};

Perl中token之间如果是不同的命名类型,则中间的空格分隔符号可以省略,主要体现在函数和参数之间的空格。
print"abc","def\n"; -> print "abc","def\n"
print$var; -> print $var
my$var="abc";   -> my $var
print~~length$var -> print length $var

显然,参数部分的首字符如果是数值、下划线或字母,则会被当作函数名的一部分进行解析,这是错误的省略方式:
print1+3;