Perl语法速查

Perl 语法和结构


脚本文件:
Perl 脚本可通过文本编辑器来创建。一般情况下,用户无需为脚本提供特别的文件扩展名,除非执行该脚本的应用程序要求提供。譬如,如果是作为Apache 容器中的cgi程序来执行的话,就必须为脚本文件名提供.pl 或.cgi扩展名


自由格式:
Perl是一种格式自由的语言。一个Perl 语言必须由一个分号结尾,但它可以出现在程序的任意位置,亦可拆分为多行内容


注释:
Perl 中的注释由 # 开头。解释器会在执行程序时自动忽略注释。注释可以出现在任何位置,但不能拆分成多行内容

EXAMPLE
print "Hello, world";  # This is a comment
# Also a comment

打印输出:
print 和 printf 是Perl 的两个内建函数,用于显示输出内容。print 函数的参数是一系列由逗号隔开的字符串或数字。printf函数则类似于 C 语言中 printf() 函数,它能够归整输出内容的格式。用户无需再其参数两边提供括号。

print value, value, value ;
printf ( string format [ , mixed args [ , mixed ... ]] );
EXAMPLE
print "Hello, world\n";
print "Hello," "world\n"; 
print ("It's such a perfect day! \n"); # Parens optional;
print "The date and time are:", localtime, "\n";
printf("Meet %s%:Age 5d%:Salary \$10.2f\n", "John", 40, 55000);

数据类型/变量:
Perl 变量支持三种基本的数据类型: 标量、数组和关联数组(即散列Hash)
Perl 变量无需在使用前声明
变量名以一个特殊字符(funny letter)开头,后面跟有任意数目的字母,包括下划线。其中,特殊字符表明该变量的类型和上下文语境。位于特殊字符后面的字母都是大小写敏感的。如果变量是以字母开头的话,其后便可跟随任意数目的字母(下划线等同于一个字母)或 / 或数字;如果变量不是以字母开头的话,则后面只能跟有一个字母


标量:
标量是一种变量,只能保存单个值、单个字符串或单个数字。标量名必须以美元符号”$”开头。标量上下文则负责表明当前正在使用单个值的情况

EXAMPLE
$first_name = "Melanie";
$last_name = "Quigley";
$salary = 12500.00;
print $first_name, $last_name, $salary;

数组:
数组是一组有序排列的标量,如字符串和 / 或数字。 数组中的各个元素以“@” 符号开头

@names = ("Jessica", "Michelle", "Linda");
print "@names";#Prints the array with elements separated by a space
print "$names[0] and $names[2]"; 
print "$names[-1]\n";
$names[3] = "Nicole";

常用的内建函数:

  • pop 移除最后一个元素
  • push 把新元素添加到数组末尾
  • shift 移除第一个元素
  • unshift 把新元素添加到数组开头
  • splice 在数组指定位置添加或移除数组元素
  • sort 对数组元素进行排序

散列:
关联数组(associative array), 又称为散列(hash), 是一组未经排序的键 / 值对,并通过字符串进行索引。散列变量名以“%”号开头

EXAMPLE
%employee = (
    "name" => "Jessica Savage",
    "Phone" => "(925) 555-1274",
    "Position" => "CEO"
);
print "$employee{"Name"}";
$employee{"SSN"} = "999-333-2345"; # assign a key/value

常用的内建函数
keys 检索散列数组中的所有键
values 检索散列数组中的所有值
each 检索散列数组中的某个键/值对
delete 删除某个键/值对


预定义变量:

符号含义
$_在执行输入和模式搜索操作时使用的默认空格变量
$.文件中最后处理的当前行号
$@当最近一个 eval()运算符提供的Perl语法报错信息
$!获取当前错误信息值, 常用于 die 命令
$0含有正在执行的程序名
$$正在执行本脚本的Perl进程号
$PERL_VERSION /S^VPerl解释器的版本、子版本和修订版本信息
@ARGV含有命令行参数
ARGV一个特殊的文件句柄,用于遍历 @ARGV 中出现的所有文件名
@INC库文件的搜索路径
@_在子例程中, @_ 变量含有传给该子例程的变量内容
%ENV关联数组型变量 %ENV 含有当前环境信息
%SIG关联数组型变量 %SIG 含有指向信号内容的句柄

常量(文本值):
固定不变的值,一旦设置就不能再更改。典型的常量包括 PI, 或一英里长度的英尺数。这些值都是从不变化的。 用户可借助 constant 保留

EXAMPLE
use constant BUFFER_SIZE => 4096;
use constant PI => 4 * atan2 1, 1;
use constant DEBUGGING => 0;
use constant ISBN => "0-13-028251-0";
PI = 6; # Cannot modify PI; produces an error.

数字:
Perl 支持整数 (十进制、八进制以及十六进制整数)、浮点数、科学计数法、布尔型(Boolean)以及null(空值)

EXAMPLE
$year = 2006;  # integer
$mod = 0775; # octal number in base 8
$product_price = 29.95; # floating point number in base 10
$favorite_color = 0x33cc99;  # integer in base 16 (hexadecimal)
$ distance_to_moon = 3.844e+5; # floating point in scientific notation
$bits = 0b101010110; # binary number

字符串和引号:
所谓字符串,是位于引号内的一组字节(字符)。
如果要用引号来标识字符串的话,必须保证这些引号是承兑出现的。here文档则是指一段嵌入于用户自定义标签中的文本块,其中第一个标签必须以<<开头。

单引号:'It rains in Spain';
双引号: "It rains in Spain";
Here 文档:
   print <<END
       It
          rains in 
    END Spain
EXAMPLE
$question = 'He asked her if she wouldn\'t mind going to Spain';
# Single quotes
$answer = 'She said: "No, but it rains in Spain."'; # Single quotes
$line = "\tHe said he wouldn't take her to Spain\n";
$temperature = "78";
print "It is currently $temperature degrees";
# Prints: "It is currently 78 degrees.". Variables are
# Interpreted when enclosed in double quotes, but not
# single quotes

引用替换字符:
Perl 为引号结构提供了一种替换形式。 其中引用的字符串将通过费字母形式的字符予以分割,或由成对出现的字符包围起来,譬如()、{}、[]。

EXAMPLE
print qq/Hello\n/; # same as: print "Hello\n";
print q/He owes $5.00/, \n"; # same as: print 'He owes $5.00', "\n";
@states=qw( ME MT CA FL ); # same as ("ME", "MT", "CA","FL")
$today = qx(date); # same as $today = 'date';

运算符:

名称符号
赋值运算符= 、+=、 -= 、 *=、 %= 、 ^= 、 &=、
算术相等==、!=、 <=>
字符串相等eq、 ne、 cmp
算术大小关系>、>=、 <、<=
字符串大小关系gt、ge、lt、le
范围运算符5..10 # 范围是 5 至 10 之内,逐个递增
逻辑运算符&&、 and、
自动递增 / 递减++、–
文件运算符-r、 -w、 -x、 -o、 -e、 -z、 -s、 -f、 -d、 -l, 等等
位运算符~、&、
字符串连接.
字符串复制x
代数运算符*、 /、 -、 +、 %
模式匹配=~、 !~
EXAMPLE
print "\nArithmetic Operations\n";
print ((3+2) * (5-3)/2);
print "\nString Operators\n";  # Concatenation
print "\t Tommy". ' ' . "$avage";
print "\nComparison Operators \n";
print 5>=3, "\n";
print 47==23, "\n";
print "\nLogical Operators\n";
$a > $b && $b < 100
$answer eq "yes" || $money == 200

print "\nCombined Assignment Operators\n";
$a = 47;
$a += 3;
$a++;
print $a;  # prints 51

print "\nPattern Matching Operators \n"
$color = "green"print if $color =~ /^gr/;

$answer = "Yes";
print if $answer !~ /[Yy]/;

条件判断:

if 语句

if (表达式){
    语句;
}

if/else 语句

if(表达式){
语句;
} else {
语句;
}

if/elsif语句

if(表达式){
   语句;
} elsif(表达式){
   语句;
} elsif(表达式){
   语句;
} else {
   语句;
}

条件运算符:
Perl 也为 if/else 语法结构提供了相应的简化模式,该模式拥有两个运算符和三个操作数(因此又称为三元运算符)。如果条件值为true,则执行紧跟在问号后面的语句;如果是false,则执行冒号后面的语句。格式:

(条件)?条件为true时执行的语句:条件为false时执行的语句
EXAMPLE
$coin_toss = int(rand(2)) + 1;  # generate a random number between 1 and 2
print ($coin_toss == 1 ? "You tossed HEAD\n": "You tossed TALL\n");

循环:
循环结构能够指定一段重复执行多次的代码。Perl支持多种不同类型的循环: while 循环、 do - while 循环、 for 循环以及 foreach 循环。
while/until循环:

while (条件表达式) {
    代码段A
}
EXAMPLE
$count = 0;
while ($count < 10){
    print $count;
    $count++;
}
until(条件表达式){
    代码段A
}
EXAMPLE
$count = 0;
until ($count == 10){
    print $count;
    $count++;
}

do-while 循环

这里写代码片

未完待续

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值