Perl 语言概览,高屋建瓴、欲招人之耳目(一)

1. 使用帮助手册

如果你是在 Linux/Unix 下,那么 Man 给我们准备好了各色点心,用 man 加上下面中的类别名就能查阅到对应的帮助,如 man perldata 

手册页 内容
perl 有些什么 perl 手册页
perldata 数据类型
perlsyn 语法
perlop 操作符和优先级
perlre 正则表达式
perlvar 预定义变量
perlsub 子过程
prelfunc 内建函数
perlmod 如何令 Perl 模块工作
perlref 参考手册
perlobj 对象
perlipc 进程间通讯
perlrun 如何运行 Perl 命令,以及命令行开关
perldebug 调试
perldiag 诊断信息
手册页 内容
perlfaq1 关于 Perl 的通用信息
perlfaq2 获取和学习 Perl
perlfaq3 编程工具
perlfaq4 数据操作
perlfaq5 文件和格式
perlfaq6 正则表达式
perlfaq7 通用 Perl 语言信息
perlfaq8 系统交互
perlfaq9 网络

或分 FAQ 来分类手册,还能在手册中搜索内容,如

man perlfunc split      --- 搜索 split 函数的使用

man perlvar ARGV   --- 内置变量 ARGV 的帮助信息

2. 变量的语法

象英语一样,Perl 变量类型之间区别主要是单数和复数,字符串和数字是单个数据,而一组数字和字符串是复数。我们叫把单数变量称为标量,而把复数变量称为数组。

通常我们用 $ 开头的名称表示标量,与此对应的数组变量使用 @ 开头。。(可以将 $ 理解成代表 "s" 或 "scalar"(标量),而 @ 表示 "a" 或 "array" (数组)来帮助你记忆。)

Perl 还有象“散列”,“句柄”,“类型团”等其他一些变量类型,与标量和数组一样,这些变量类型也是前导趣味字符,下面是你将会碰到的所有趣味字符:

类型 字符 例子 用于哪种名字
标量 $ $cents 一个独立的数值(数字或字串)
数组 @ @large 一列数值,用编号做键字
散列 % %interest 一组数值,用字串做键字
子过程 & &how 一段可以调用的 Perl 代码
类型团 * *struck 所有叫 struck 的东西

2.1 单数变量

$answer = 42; # 一个整数
$pi = 3.14159265 # 一个"实"数
$pet = "Camel"; # 字串
$sign = "I ove my $pet"; # 带代换的字串
$cose = 'It cose $100'; # 不带代换的字串
$thence = $whence; # 另一个变量的数值
$salsa = $moles * $avocados; # 一个胃化学表达式
$exit = system("vi $file"); # 一条命令的数字状态
$cwd = pwd; # 从一个命令输出的字串

如果你使用了一个尚未赋值的变量,这个未初始化的变量会在需要的时候自动存在.遵循最小意外的原则,该变量按照常规初始化为空值,"" 或 0。

不同的操作符会给参数提供一个数字环境,字符串环境或布尔环境.例如:

   $camels = '123';
   print $camels +1, "\n";

输出为 124。

"\n" 表示的新行同样也在字符串环境中,但是由于它本来就是一个字符串,因此就没有必要做转换了.
'\n',这就表示这是由反斜扛和 n 两个字符组成的字符串,而不表示一个新行.

从某种意义上来说,使用单引号和双引号也是另外一种提供不同环境方法.双引号环境在 Perl 中称为代换环境.

1.2.3 复数变量

Perl 有两种类型的多值变量:数组和散列,它们提供一个列表环境而不是标量环境.

数组.一个数组是多个标量的有序列表,可以用标量在列表中的位置来访问要对一个数组赋值,你只需简单的将这些值排列在一起,并用大括弧括起来.

   @home = ("couch", "chair", "table", "stove");

从数组给标量赋值:(有点类似 PL/SQL 中的游标赋值给多个变量)

   ($potato, $lift, $tennis, $pipe) = @home;

他们被称为列表赋值,他们逻辑上平行发生,因此你可以象下面一样交换两个变量:

($alpha, $omega) = ( $omega, $alpha);

数组变量的引用,赋值,如上的数组 @home,引用第一个元素就是 $home[0],注意是从 0 开始,因为我们处理的这个数组元素是标量,因此在他前面总是前缀 $.

数组是有序的,你可以在它上面做很多有用操作.如作为堆栈 push 和 pop,Perl 将你数组的结尾当成堆栈的顶端。

散列是一组无序标量,通过和每个标量关联的字符串进行访问.散列经常被称为关联数组.

散列使用 % 这个趣味字符来标志散列名字(如果你仔细观察 %,你会发现斜扛两边的键字和数值.这样理解可能会帮助记忆.)

散列的声明:

%longday = ("Sun", "Sunday", "Mon", "Monday", "Tue", "Tuesday");

或(无疑第二种方式易读好理解)

%longday = ("Sun" => "Sunday","Mon" => "Monday","Tue" => "Tuesday");

可以通过 {} 来获取单个的散列元素.比如,你应该使用 $longday{"Mon"}.注意因为你在处理标量,因此在 longday 前面使用 $,而不是 %,% 代表整个散列.

我们注意到变量中的 $、@ 或 % 不像其他语言的变量名中相对应的符号(其他语言的变量命名中一般只允许 $),它们不是作为变量名的一部分,而是承载着变量类型的说明。所以当你看到访问 @home、%longday 变量中的单个元素用的是 $home[0]、$longday{"Mon"} 不要感到惊讶,而是要去习惯这种用法。

强调一下:数组和列表声明时都用括号"()",访问数组和列表的元素时分别用中括号"[]" 和 大括号 "{}"。

类别: Perl. 标签: . 阅读(77). 订阅评论. TrackBack.

Leave a Reply

Be the First to Comment!

avatar