Perl 简明教程
Perl - Syntax Overview
Perl 从许多语言借用了语法和概念:awk、sed、C、Bourne Shell、Smalltalk、Lisp 甚至英语。但是,语言之间存在一些明确的差异。本章旨在让您快速了解 Perl 中预期的语法。
Perl 程序包括一系列声明和语句,从上到下运行。循环、子例程和其他控制结构允许您在代码中跳转。每个简单语句都必须以分号 (;) 结尾。
Perl 是一种自由格式语言:您可以根据自己的喜好对其进行格式化和缩进。空白主要用于分隔标记,这与 Python 等语言不同,后者语法的重要组成部分,或者 Fortran,其中它不重要。
First Perl Program
Interactive Mode Programming
您可以在命令行中使用 -e 选项使用 Perl 解释器,它允许您从命令行执行 Perl 语句。让我们在 $ 提示符下尝试如下操作 −
$perl -e 'print "Hello World\n"'
此执行将产生以下结果 −
Hello, world
Script Mode Programming
假设您已在 $ 提示符下,让我们使用 vi 或 vim 编辑器打开一个文本文件 hello.pl,并在文件中添加以下行。
#!/usr/bin/perl
# This will print "Hello, World"
print "Hello, world\n";
在此 /usr/bin/perl 是实际的 Perl 解释器二进制文件。在执行脚本之前,请确保更改脚本文件模式并给予执行权限,通常设置为 0755,最后执行上述脚本,如下所示 −
$chmod 0755 hello.pl
$./hello.pl
此执行将产生以下结果 −
Hello, world
您可以根据个人喜好对函数参数使用圆括号,也可以省略圆括号。只有在需要澄清优先级问题时才偶尔需要它们。以下两个陈述产生相同的结果。
print("Hello, world\n");
print "Hello, world\n";
Perl File Extension
Perl 脚本可以在任何普通纯文本编辑器程序中创建。每种类型的平台都有多种程序可用。网上有许多专为程序员设计的程序可供下载。
根据 Perl 约定,Perl 文件必须使用 .pl 或 .PL 文件扩展名保存,才能被识别为功能性 Perl 脚本。文件名可以包含数字、符号和字母,但不能包含空格。在空格处使用下划线 (_)。
Comments in Perl
任何编程语言中的注释都是开发人员的朋友。注释可用于使程序对用户友好,并且解释器会简单地跳过这些注释,而不会影响代码功能。例如,在上面的程序中,以散列符号 # 开头的行是注释。
简单来说,Perl 中的注释以散列符号开头并一直运行到行的末尾 −
# This is a comment in perl
以 = 开头的行解释为嵌入式文档(pod)部分的开头,并且编译器会忽略此后所有行,直到遇到下一个 =cut。以下示例 −
#!/usr/bin/perl
# This is a single line comment
print "Hello, world\n";
=begin comment
This is all part of multiline comment.
You can use as many lines as you like
These comments will be ignored by the
compiler until the next =cut is encountered.
=cut
这会产生以下结果 −
Hello, world
Whitespaces in Perl
Perl 程序不关心空格。以下程序可以很好地运行:
#!/usr/bin/perl
print "Hello, world\n";
但如果空格在引号字符串内,它们将按原样打印。例如:
#!/usr/bin/perl
# This would print with a line break in the middle
print "Hello
world\n";
这会产生以下结果 −
Hello
world
在引号之外使用时,所有类型的空格(如空格、制表符、换行符等)对解释器来说都是等效的。包含只包含空格的行(可能带有注释)被称为空白行,Perl 完全忽略它。
Single and Double Quotes in Perl
你可以按如下方式对文字字符串使用双引号或单引号:
#!/usr/bin/perl
print "Hello, world\n";
print 'Hello, world\n';
这会产生以下结果 −
Hello, world
Hello, world\n$
在单引号和双引号中有一个重要的区别。只有双引号中的@ {s0}变量和换行符 \n 等特殊字符,而单引号不插入任何变量或特殊字符。在下面的示例中,我们将 $a 用作变量来存储一个值,然后打印该值:
#!/usr/bin/perl
$a = 10;
print "Value of a = $a\n";
print 'Value of a = $a\n';
这会产生以下结果 −
Value of a = 10
Value of a = $a\n$
"Here" Documents
你可以非常方便地存储或打印多行文本。你甚至可以在“此处”文档中使用变量。下面是一个简单的语法,请仔细检查 << 和标识符之间不能有空格。
标识符可以是裸词或我们下面用于 EOF 的一些引用文本。如果标识符被引用,你使用的引用类型决定了此处文档中文本的处理方式,就像在常规引用中一样。未引用的标识符的工作方式就像双引号。
#!/usr/bin/perl
$a = 10;
$var = <<"EOF";
This is the syntax for here document and it will continue
until it encounters a EOF in the first line.
This is case of double quote so variable value will be
interpolated. For example value of a = $a
EOF
print "$var\n";
$var = <<'EOF';
This is case of single quote so variable value will be
interpolated. For example value of a = $a
EOF
print "$var\n";
这会产生以下结果 −
This is the syntax for here document and it will continue
until it encounters a EOF in the first line.
This is case of double quote so variable value will be
interpolated. For example value of a = 10
This is case of single quote so variable value will be
interpolated. For example value of a = $a