- Perl 基础知识
- Perl - 主页
- Perl - 简介
- Perl - 环境
- Perl - 语法概述
- Perl - 数据类型
- Perl - 变量
- Perl - 标量
- Perl - 数组
- Perl - 哈希
- Perl - IF...ELSE
- Perl - 循环
- Perl - 运算符
- Perl - 日期和时间
- Perl - 子例程
- Perl - 参考资料
- Perl - 格式
- Perl - 文件 I/O
- Perl - 目录
- Perl - 错误处理
- Perl - 特殊变量
- Perl - 编码标准
- Perl - 正则表达式
- Perl - 发送电子邮件
- Perl 高级
- Perl - 套接字编程
- Perl - 面向对象
- Perl - 数据库访问
- Perl - CGI 编程
- Perl - 包和模块
- Perl - 流程管理
- Perl - 嵌入式文档
- Perl - 函数参考
- Perl 有用资源
- Perl - 问题与解答
- Perl - 快速指南
- Perl - 有用的资源
- Perl - 讨论
Perl - 语法概述
Perl 借鉴了许多语言的语法和概念:awk、sed、C、Bourne Shell、Smalltalk、Lisp 甚至英语。然而,这些语言之间存在一些明显的差异。本章旨在让您快速掌握 Perl 中所需的语法。
Perl 程序由一系列声明和语句组成,这些声明和语句从上到下运行。循环、子例程和其他控制结构允许您在代码中跳转。每个简单语句都必须以分号 (;) 结尾。
Perl 是一种自由格式的语言:您可以按照自己喜欢的方式格式化和缩进它。空格主要用于分隔标记,这与 Python 等语言不同,空格是语法的重要组成部分,而 Fortran 则无关紧要。
第一个 Perl 程序
交互模式编程
您可以在命令行中使用带有-e选项的 Perl 解释器,它允许您从命令行执行 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 文件必须以 .pl 或 .PL 文件扩展名保存,以便被识别为正常运行的 Perl 脚本。文件名可以包含数字、符号和字母,但不得包含空格。在空格处使用下划线 (_)。
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$
单引号和双引号有一个重要的区别。仅双引号会插入变量和特殊字符(例如换行符 \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$
“这里”文件
您可以轻松地存储或打印多行文本。甚至您也可以在“此处”文档中使用变量。下面是一个简单的语法,仔细检查 << 和标识符之间不能有空格。
标识符可以是一个简单的单词,也可以是一些引用的文本,就像我们下面使用的 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
转义字符
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 是一种区分大小写的编程语言。因此$Manpower和$manpower在 Perl 中是两个不同的标识符。