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
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。
$wife = ["Leah", "Rachel", "Bilhah", "Zilpah"]; #错误
这个 在perl5中不会报错的