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

1.2.4 复杂数据结构

$wife{"Jacob"} = ("Leah", "Rachel", "Bilhah", "Zilpah");   # 错误

$wife{"Jacob"} = ["Leah", "Rachel", "Bilhah", "Zilpah"];   # 正确

用[] 中括弧来将一个列表转换成一个标量。

$wife[0] = ["Leah", "Rachel", "Bilhah", "Zilpah"];  #正确

$wife = ["Leah", "Rachel", "Bilhah", "Zilpah"]; #错误

左边要写成 $wife{"Jacob"} 或 $wife[0] 表明 wife 是一个数组或散列,只有对数组或散列才能这样赋值。

访问方式用 $wife{"Jacob"}[0] 或 $wife[0][0]

我们希望将散列结构也当成一个标量,我们可以使用花括弧来完成,如:

         $kids_of_wife{"Jacob"} = {
              "Leah"   => ["Reuben", "Simeon", "Levi", "Judah", "Issachar", "Zebulun"],
              "Rachel" => ["Joseph", "Benjamin"],
              "Bilhah" => ["Dan", "Naphtali"],
              "Zilpah" => ["Gad", "Asher"],};

访问 $kids_of_wife{"Jacob"}{"Leah"}[0]   = "Reuben";

1.2.5 简单数据结构

Perl 用 package 标名命名空间,如

   package Camel;
   $fido = &fetch();

$fido 的真实名字是 $Camel::fido,&fetch 的真实名字是 &Camel::fetch

当我们使用:

   $fido = new Camel "Amelia";

我们实际上调用了 Camel 包中的 &new,它的全名是 &Camel::new。并且当我们使用:
 
   $fido->saddle();

的时候,我们调用了 &Camel::saddle 过程,因为 $fido 记得它是指向一个 Camel 对象的。这就是一个面向对象程序的工作方法。
 
package Camel 实际上是开始了一个新包。Perl 中用 use 声明借用其他已有包的名词和动词,use 同时也会检查磁盘上载入的模块名称。

实际上,你必须先使用:

   use Camel;

然后才能使用:

   $fido = new Camel "Amelia";

不然的话,Perl 将不知道 Camel 是什么东西。

可能 Perl 最强大的东西并不在 Perl 本身,而在于 CPAN(Comprehensive Perl Archive Network),CPAN 包含无数的用于实现不同任务模块

。你不需要知道如何实现这些任务,只需要下载这些模块,并简单用下面的方法来使用它们:

   use Some::Cool::Module;

然后你就可以使用模块中的动词。

   use strict;

strict 模块干的事是更加严格地约束 Perl 中的一些规则,这样你在很多方面必须更明确,而不是让 Perl 去猜,例如如何确定变量的作用范

围。

1.2.6 动词

在 Perl 中过程和函数并没有硬性的区别。我们经常称动词为操作符(内建)或者是子过程(用户自定义)(注:历史上,Perl 要求你在调用

的任何用户定义子过程的前面加一个与号(&)(参阅早先时候的 $fido = &fetch();)。但是到了 Perl 版本 5,这个与号是可选的了,所以

用户定义动词现在可以和内建动词相同的方法进行调用了($fido = fetch();)。

1.3.1 如何运行

1) %perl -e 'print "Hello, world!\n";'  # Unix 下
   %perl -e "print 'Hello, world!'";    # Win 下

2) %perl gradation           #gradation 文件中写了 perl 脚本

3) %gradation               #gradation 前加了 #! /usr/bin/perl (#!”shebang”标志),并且该文件可执行
     Windows 下的 .pl 脚本如果关联了 perl.exe 解释器,不用加 shebang 标志,要加的话就是 #!C:\Perl\bin\perl.exe,就直接能执行 gradation.pl
     #! /usr/bin/perl   -w  # -w 选项会打开所有有用的和有趣的警告信息

本文链接 https://yanbin.blog/perl-overview-2/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

1 Comment
Inline Feedbacks
View all comments
hengry wang
hengry wang
4 years ago

$wife = ["Leah", "Rachel", "Bilhah", "Zilpah"]; #错误
这个 在perl5中不会报错的