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文件保存为.pl或.PL文件扩展名,才能将其识别为功能良好的Perl脚本。文件名可以包含数字,符号和字母,但不能包含空格。在空格处使用下划线(_)。
  • Perl中的注释

    任何编程语言中的注释都是开发人员的朋友。注释可用于使程序易于使用,并且解释器仅会跳过注释而不会影响代码功能。例如,在上述程序中,以井号#开头的行是注释。简单地说,Perl中的注释以井号符号开头,一直到行尾-
    
    # 这是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),而单引号不插入任何变量或特殊字符。检查下面的示例,其中我们使用$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。如果带引号的标识符,则与常规引号一样,您使用的引号类型将决定此处是否包含文本。未加引号的标识符的作用类似于双引号。
    
    #!/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中的两个不同的标识符。