当前位置: 首页 > 文档资料 > Perl 入门教程 >

Syntax 概述

优质
小牛编辑
130浏览
2023-12-01

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中的两个不同的标识符。

最后更新:

类似资料

  • 概述 国际化和本地化的目的就是让一个网站应用能做到根据用户语种和指定格式的不同而提供不同的内容。 Django 对文本翻译, 日期、时间和数字的格式化,以及时区提供了完善的支持。 实际上,Django做了两件事: 由开发者和模板作者指定应用的哪些部分应该翻译,或是根据本地语种和文化进行相应的格式化。 根据用户的偏好设置,使用钩子将web应用本地化。 很显然,翻译取决于用户所选语言,而格式化通常取决

  • 虽然Django 满满的便捷性让Web 开发人员活得轻松一些,但是如果不能轻松地部署你的网站,这些工具还是没有什么用处。Django 起初,易于部署就是一个主要的目标。有许多优秀的方法可以轻松地来部署Django: 如何使用WSGI 部署 部署的检查清单 FastCGI 的支持已经废弃并将在Django 1.9 中删除。 如何使用FastCGI、SCGI 和AJP 部署Django 如果你是部署D

  • 本书概述 进程的概念大家都很熟悉,但你是否能准确说出僵尸进程的含义呢?还有 COW(Copy On Write)、Flock(File Lock)、Epoll 和 Namespace 的概念又是否了解过呢? 本书汇集了进程方方面面的基础知识,加上编程实例,保证阅读后能自如地回答以上问题,在项目开发中对进程的优化也有更深的理解。 本书架构 本书按循序渐进的方式介绍进程的基础概念和拓展知识,主要涵盖以

  • Docker在1.12.0和以上版本中增加了swarm模式。通过swarm模式管理的Docker Engines集群称之为“Swarm”。并可以通过Docker CLI来创建Swarm,在Swarm中部署应用服务,以及管理Swarm。 功能特点 在Docker Engines中集成了集群管理功能:通过Docker CLI可以创建一个用来发布应用services的swarm,而不需要安装其他任何额外

  • 这是 Elasticsearch 官方的 PHP 客户端。我们把 Elasticsearch-PHP 设计成低级客户端(低级设计模式),使用时不会偏离 REST API 的用法。 客户端所有方法几乎都与 REST API 对应,而且也与其他编程语言的客户端(如 ruby, python 等)方法结构相似。我们希望这种对应方式可以方便开发者更加容易上手客户端,且以最小的代价快速从一种编程语言转换到另

  • 特点 为什么用 Groovy?