Syntax 概述
Perl借用了许多语言的语法和概念:awk,sed,C,Bourne Shell,Smalltalk,Lisp甚至英语。 但是,语言之间存在一些明显的差异。 本章旨在让您快速了解Perl中预期的语法。
Perl程序由一系列声明和语句组成,它们从顶部到底部运行。 循环,子例程和其他控制结构允许您在代码中跳转。 每个简单的语句都必须以分号(;)结尾。
Perl是一种自由格式语言:您可以根据自己的喜好对其进行格式化和缩进。 空格主要用于分隔标记,不像Python这样的语言,它是语法的重要组成部分,或者Fortran,它是无关紧要的。
第一个Perl计划
交互模式编程 (Interactive Mode Programming)
您可以在命令行中使用带-e选项的Perl解释器,这样您就可以从命令行执行Perl语句。 让我们在$ prompt尝试一下如下 -
$perl -e 'print "Hello World\n"'
此执行将产生以下结果 -
Hello, world
脚本模式编程
假设您已经处于$ prompt状态,让我们使用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约定,必须使用.pl或.PL文件扩展名保存Perl文件,以便将其识别为正常运行的Perl脚本。 文件名可以包含数字,符号和字母,但不能包含空格。 在空格的位置使用下划线(_)。
Perl中的评论
任何编程语言的评论都是开发人员的朋友。 注释可用于使程序用户友好,并且它们只是被解释器跳过而不会影响代码功能。 例如,在上面的程序中,以hash #开头的行是注释。
简单地说Perl中的注释以哈希符号开头并运行到行尾 -
# This is a comment in perl
以=开头的行被解释为嵌入式文档(pod)的一部分的开头,编译器忽略所有后续行直到next = 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”文档中的变量。 下面是一个简单的语法,仔细检查<
标识符可以是一个单词或一些引用的文本,就像我们在下面使用EOF一样。 如果引用了标识符,则您使用的引用类型决定了对此docoment内部文本的处理方式,就像在常规引用中一样。 不带引号的标识符就像双引号一样。
#!/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使用反斜杠(\)字符来转义可能干扰我们代码的任何类型的字符。 让我们举一个例子,我们想要打印双引号和$ sign -
#!/usr/bin/perl
$result = "This is \"number\"";
print "$result\n";
print "\$result\n";
这将产生以下结果 -
This is "number"
$result
Perl标识符
Perl标识符是用于标识变量,函数,类,模块或其他对象的名称。 Perl变量名称以$,@或%开头,后跟零个或多个字母,下划线和数字(0到9)。
Perl不允许标识符中的标点符号,如@,$和%。 Perl是一种case sensitive编程语言。 因此, $Manpower和$manpower是Perl中的两个不同的标识符。