Perl 语法概述

Perl 语法概述

Perl从许多语言(包括awk、sed、C、Bourne Shell、Smalltalk、Lisp甚至英语)借用了语法和概念。然而,这些语言之间仍然存在一些明显的差异。本章的目的是帮助您快速了解Perl中预期的语法。

Perl程序由一系列的声明和语句组成,从上到下依次执行。循环、子程序和其他控制结构允许您在代码中跳转。每个简单的语句必须以分号(;)结束。

Perl是一种自由形式的语言:您可以按照自己喜欢的方式进行格式和缩进。空格主要用于分隔标记,不像Python这样的语言中空格也是语法的重要组成部分,或者Fortran中的空格是无关紧要的。

第一个Perl程序

交互模式编程

您可以在命令行上使用Perl解释器以 -e 选项,这使您可以从命令行执行Perl语句。让我们尝试在$提示符下执行一些操作,如下所示:

$perl -e 'print "Hello World\n"'

这个执行将产生以下结果 –

Hello, world

脚本模式编程

假设您已经位于$提示符下,让我们使用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文件扩展名

Perl脚本可以在任何普通的简单文本编辑器程序中创建。每种平台都有多个可用的程序。有许多为程序员设计的可在网上下载的程序。

作为Perl的约定,为了将文件识别为可运行的Perl脚本,Perl文件必须以.pl或.PL文件扩展名保存。文件名可以包含数字、符号和字母,但不能包含空格。用下划线(_)代替空格。

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

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中完全忽略它。

在Perl中使用单引号和双引号

你可以使用双引号或单引号来表示字面字符串,如下所示:

#!/usr/bin/perl

print "Hello, world\n";
print 'Hello, world\n';

这将产生以下结果−

Hello, world
Hello, world\n$

单引号和双引号之间有一个重要的区别。只有双引号 插值(interpolate) 变量和特殊字符,如换行符\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”文档

你可以非常方便地存储或打印多行文本。甚至你可以在”here”文档中使用变量。下面是一个简单的语法,请认真检查”<<“和标识符之间不能有空格。

标识符可以是一个裸字或者像我们下面使用的EOF一样带引号的文本。如果标识符带引号,你使用的引号类型确定了here文档中的文本处理方式,就像常规引号一样。没有引号的标识符的作用类似双引号。

#!/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

转义字符

Perl使用反斜杠(\)字符来转义可能干扰我们代码的任何类型字符。让我们举一个例子,我们想要打印双引号和美元符号 –

#!/usr/bin/perl

result = "This is \"number\"";
print "result\n";
print "\$result\n";

这将产生以下结果−

This is "number"
$result

Perl标识符

Perl标识符是用来标识变量、函数、类、模块或其他对象的名称。Perl变量名以$@%开头,后面可以跟零个或多个字母、下划线和数字(0到9)。

Perl不允许在标识符中使用@$%等标点符号。Perl是一种 区分大小写 的编程语言。因此,在Perl中 $Manpower$manpower 是两个不同的标识符。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程