Perl语法

一.Perl介绍

Perl是Practical Extraction and Report Language的缩写,可翻译为"实用报表提取语言"

Perl是高级、通用、直译式、动态的程序语言。

Perl最初的设计者为拉里·沃尔(Larry Wall),于1987年12月18日发表。

Perl 借用了C、sed、awk、shell脚本以及很多其他编程语言的特性。

Perl 最重要的特性是Perl内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。

二.Perl语法

perl语法类似于C语言(perl源于Unix),语句由逗号划分,代码层次使用花括号{}划分,但是不必声明变量类型;

标量变量($name),数组(@name),哈希结构(%name),类型标识符,文件句柄没有标识符;

哈希结构可以使用列表创建,但不要以为它也是由圆括号括起来的;    在使用键时,用花括号。(特别注意)

数字之间比较用(==、>=、<=、!=),字符串之间比较则用(eq、gt、lt、ge、le)

print函数,不一定需要括号。几种情况:

print $name(直接输出) ;     print ‘$name’(基本不用,错误的,原样输出);         

print “$name”(有时会用,会自动替换); print 函数在做文件输入时(文件句柄),不能有逗号,只能用空格。

@_ 是函数传参时放置参数的数组,可以从中取实参;

$_ 是默认参数的意思,指的是在不指定的情况下,程序处理的上一个变量;

shift 是将数组的第一个元素 $array[0] 移走, 并将这个元素回传(return) (堆栈一节有详细讲解)。

shift函数是取数组的第一个元素,缺省就取@_的第一个函数,这句一般用在程序的开头,用于接收程序的参数,或者子函数的开头,用于接收子函数的参数。

句柄和文件的关系,文件必须被打开,并赋与句柄,才能操作;有的句柄可以直接使用,如STDIN、STDERR;广义上,标量变量就是一种代表数据的句柄。

perl中数值和字符串可以随意的使用递增和递减运算符。

三.Perl程序

第1学时 Perl入门

  • 安装perl
  • perl内部文档
  • 第一个perl脚本

通用编程语言,胶水语言,perl擅长将其他程序连接到一起。

# 检查perl是否安装成功
perl -v

//第一个Perl程序
print "Hello,World!\n"

第2学时 Perl的基本构件:数字和字符串

标量常量: 数字和字符串

标量变量: 存放标量     

(1)字符串

只有使用转义字符才能在字符串中插入特殊的字符

  • 单引号:‘ ’中的每个字符都表示它本身,$a, \n等等,都不会进行处理,原样输出
  • 双引号:“ ”中Perl会查看是否存在 变量名 和 转义序列,一旦发现,会自动替换

何便捷的将字符串用 双引号 或 单引号 括起来?

  • qq运算符:qq(I said, “I love you!”)   用法如上
  • q运算符:    q(Tom’s tree)   用法与之前单引号一样,会原样输出单引号内的所有内容。

(2)标量变量

特殊变量($_):当前默认值,

(3)运算符(运算符之间可以有空格)

数字运算符有哪些?  

加+;减-;乘*;除/;求余%;取幂**;

字符串运算符有哪些?  

  • 并置运算符(.)(运算对象必须为字符串标量或者标量变量);
  • 可以使用反斜杠\,指定屏蔽字符串内的内插替换(标量变量和转义字符);
  • 如果字符串中标量名和字符串过于紧密,可以用{}显示指定变量名,如${name}space;
  • 重复运算符(x),如“-”x 10;

带名字运算符?

int(5.20); length(“nose”); lc(“ME TOO”); uc(“hal 9000”); cos(50); rand(5)(返回随机浮点数,默认是0-1)

尖括号运算符?

用于读写文件,<STDIN>,从标准输入读入一行;默认会读入我们最后输入的回车,可以使用从chomp运算符去掉;

chomp可以去除任何参数结尾的换行符,返回被删除的字符数(删除了返回1,没删除返回0)。

第3学时 控制程序流(foreach是核心)

  • 语句块
  • 运算符
  • 循环
  • 标号
  • 退出perl

(1)if语句(几乎与c语言类似)

$r = 10;
if ($r == 10){
    print '$r is 10!';
}
elsif ($r == 20){
    print '$r is 20!';
}
else{
    print '$r is neither 10 nor 20.'
}

#如果只有一个条件 可以把if 放到后面
print "Hello!\n"   if(1==1);

(2)字符关系运算符

  • eq等于;
  • gt大于;
  • lt小于;
  • ge大于等于;
  • le小于等于;
  • ne不等于;
perl中有哪些假值?  0;“”;‘’;‘0’;“0”;undef;

逻辑运算符有哪些?  and; or; not;
if ($x and $y and not $z){
    print "All conditions met.\n";
}else{
    print "Not all.\n"
}

(3)循环语句

$count=0;
while($count<=10){
print "$count\n";
$count++;
}

for($i; $i<=10; $i++){
print "i is now $i\n";	
	}

# 高级perl技巧:使用foreach进行遍历
@name=qw(wang chuang);
print " my name is ";

foreach $name(@name){       #  $name是对@name中元素的引用, 可以修改@name
print "$name"	
}

(4)流程控制工具

last语句(退出当前循环)(等同于C里的break)

$count = 1;
while($count <= 15){
    
    last if ($count == 5);
    print "$count\n";
    $count++;
}

for($i=0; $i <= 100; $i++){
    for($j=0; $j <= 100; $j++){
        if ($i * $j == 140){
            print "The product of $i and $j is 140.\n";
            last;
        }
    }
}

next语句(回到当前循环头部)(等同于C里的continue)

for($i=0; $i<=100; $i++){
 next if(not $i %2);
 print  "An odd number=$i\n";
}

第4学时 基本构建的堆栈: 列表与数组

1.如何从数组中获取元素?

@name=qw(wang chuang chuang);
print @name;  #每个数组元素之间紧密排列,没有空格和换行
print "\n@name\n"; #元素之间有空格
print scalar(@name);  #输出数组元素个数
print "\n"

@a = qw(wang chuang chuang);
print $a[0];
print $a[1];
print "\n";
$a[2] = "tuo";
print @a;
print "\n";

2.如何将 数组划分成 片

@a=qw(wang chuang tuo 1 2 3 4 5 6);
@b=@a[0,2,4,6];
print @b;
print "\n";

3.如何寻找 数组的结尾?

@a = qw(li zhi xin 1 2 3 4 5 6);
print $#a;   # 返回结尾元素的索引

@a=qw(wang chuang tuo 1 2 3 4 5 6);
$size=@a;
print $size;    #根据上下文, 返回数组元素的个数
print "\n"

print $a[-1];   #  返回数组的最后一个元素

如何测试数组中是否包含元素?

@mydata=qw(wang chuang tuo);
if(@mydata){
print "Not empty!\n";
}

对数组 进行操作

如何遍历?

# 普通方法:使用for循环 进行遍历
@name=qw(wang chuang tuo);
print "my name is ";
for($index=0;$index<@name; $index++){
	print "$name[$index] ";

}	

 

#  高级perl技巧:使用foreach进行遍历
@name = qw(wang chuang tuo);
print "my name is ";
foreach $name (@name){  # $name是对@name中元素的引用,可以修改@name
    print "$name "
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangchuang2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值