这是整个 Perl 教程 的开始。

通过学习此教程,你将学会怎样在微软 Windows,Linux 和 Mac 操作系统上安装并使用Perl。以及,怎样搭建开发环境,简而言之,使用什么IDE或者编辑器写Perl程序。 然后,学习“Hello, World”这一经典例子。

Windows

Windows 操作系统下,我们选择 DWIM Perl. 它包括Perl自己, Perl IDE--Padre,以及一些经典的Perl 模块。

DWIM Perl 的网站,下载 .exe 文件,双击运行,即可安装Perl。请注意装DWIM perl前确保你计算机上没有其它版本的Perl。不同版本的Perl可以并存,但是可能需要你做额外的配置。

Linux

多数Linux 发行版,已经预装来Perl。Padre也有Linux版,你可以通过软件管理中心安装。当然,你也可以用其它的文本编辑器,Vim ,Emacs 或者 Gedit。

Apple

Macs 也预装了Perl,如果没有,很容易自行安装。

编辑器和IDE

对于新手,推荐使用Padre,但不是必须。如果你使用Windows操作系统,即使你不用Padre,我也强烈建议你安装 DWIM Perl。主要是它有很多你很可能会用到的模块。

视频

如果你仍不清楚怎么安装,你可以跟着我录制的视频学习 Hello world with Perl

第一个Perl程序

第一个Perl程序的最终版本:

use 5.010;
use strict;
use warnings;

say "Hello World";

Hello world

安装Perl后,点击 "开始 -> 所有程序 -> DWIM Perl -> Padre",Padre 将会为你打开一个空白文件。

输入

print "Hello World\n";

不要忘了行末的“;”,perl 语句以“;”结尾。在很多语言中,“;”可以省去,但是Perl 不是。“\n” 的意思是开始新一行。你可以去掉“\n”,看看输出有什么区别。字符串一般放在双引号之间。 函数 print 输出其后的内容。注意,所有的输入都要在英文状态下输入。输入中文当然是可以的,但是需要对Perl有更多的了解。

保存此文件为 hello.pl ,然后选择 “运行 -> 运行脚本” 会有一个新的窗口出现,显示运行结果。

这就是你的第一个Perl程序。

非 Padre 用户

保存程序为 hello.pl, 在终端中,切换到保存目录, 输入

perl hello.pl

即可运行 hello.pl。

say 与 print

我们改进下第一个Perl程序。

首先,声明我们用哪个版本的Perl。

use 5.010;
print "Hello World\n";

选择 “运行 -> 运行脚本”或者用快捷键 F5. Padre会自动保存此程序,然后运行。

通常,建议你声明你所需要的最低的Perl版本。

在我们的例子中,Perl 5.010 包括了一些比较好的特性,比如我们要用的到的 say。 say 与print 的区别是,say自动添加 “\n"。

你可以把代码改为这样:

use 5.010;
say "Hello World";
请观察一下,其与上一程序的区别。

你现在用的版本可能是 5.12.3 或者 5.14。 多数linux发行版,预装5.10或者更新版本的Perl。如果你的版本低于5.10,say 是不能用的,只能用 print。

严格模式

另外,强烈建议用 pragmata 来改变Perl的默认设置,在这里我们用了 strict 和 warnings。有人会问,为什么不让Perl默认启用呢?这是历史原因,Perl出现与1987年,如果默认启用,在这些pragmata产生之前的很多程序将无法运行。Perl是非常重视向后兼容的,这一点比其他的语言如Python,力度要大很多。

use 5.010;
use strict;
use warnings;

say "Hello World";

我们用关键词 use 来启动相应的 pragma。

strict 和 warnings 有助于找出代码中常见的错误,有时候,甚至能够帮你避免犯某些错误。如果你想得到更详细的debug 信息,可以添加 use diagnostics 。

获得用户输入

我们继续改进我们的程序。使之能够获得用户输入。

use 5.010;
use strict;
use warnings;

say "What is your name? ";
my $name = <STDIN>;
say "Hello $name, how are you?";

$name 叫做标量,所有标量以 $ 开头。注意标量和变量并非相同。标量是变量的一种。在Perl 中,变量用 my 来声明。 获取输入的内容。

运行上面的例子,程序会问你你的名字,输入并按 ENTER 键。ENTER 告诉Perl你输入完毕。

程序输出并非预想的那样。逗号并没有直接出现在名字之后,而是出现在新一行的开头。为什么呢?因为你输入名字后,按来ENTER 键,Perl 把 ENTER 也当作你输入的一部分了。你想一想,Word 中 你按 ENTER键的作用是不是换行?

改进

use 5.010;
use strict;
use warnings;

say "What is your name? ";
my $name = <STDIN>;
chomp $name;
say "Hello $name, how are you?";

或许你已经注意到了,chomp。它的作用是去除字符串末尾的换行符 “\n”。

总结

建议在每一个perl程序的开始加入

use 5.010;
use strict;
use warnings;
use diagnostics;

练习

1.

use strict;
use warnings;
use 5.010;

say "Hello ";
say "World";

Hello World 没有输出到同一行,怎样改进能使输出在同一行?

2.

写一个程序,请求用户输入两个数字,输出两个数字之和。