Perl学习笔记

一、Perl

Perl是由Larry Wall(拉里·沃尔)在1987年设计的一门计算机编程语言,最重要而且也是最吸引人的特性就是它拥有自己的代码库CPAN,而且,它内部集成了正则表达式!

二、基本语法规则:

1、代码规范

(1)代码行

Perl代码行跟主流语言(C/C++,JAVA等)类似,以" ; " 结尾。

(2)注释

Perl 没有块注释的功能,单行注释为 # 符号,在需要注释的行开头加上 # 即可

(3)模块加载

Perl有两种模块加载导用的办法:use和require;两者是有区别的。


表1:use及require加载模块时的区别

 userequire
模块后缀名不需要需要
模块加载时间编译时执行时
模块子程序一同导入不导入


use Cwd
require "config.pl"
print "注释范例";
# 此行已被注释

 

2、变量

(1)定义

Perl的变量定义及其使用都采用 $变量名 的形式。 所有变量都以$开头,在代码中变量一目了然。

(2)声明

p.s 要定义变量的作用域,只需要在定义变量时,在变量前加入作用域名称即可。

my $a = 1;
print a;

3、数组

(1)定义

Perl数组定义采用 @数组名 的形式,以@开头。

(2)声明及使用

 数组元素调用采用 $数组名[下标] 的形式。

@array = (1,2,3);
print $array[0];


4、控制台标准输入输出

(1)标准控制台输入

标准输入采用 <STDIN> 的形式,与C语言gets类似,为单行读取。

(2)标准控制台输出

标准输出采用 print 的形式,直接跟输出的变量名或字符串。

#! /usr/bin/perl
while(<STDIN>){
    $num=<STDIN>;
    printf "%${num}s\n", $_;
}

5、自定义函数格式

自定义函数在Perl里被称为子程序。

(1)定义

Perl里子程序的定义可以位于程序的任何地方。用sub来定义子函数,后面跟着子程序名。

形如: sub 子程序名 {  代码段 }


(2)调用

Perl采用 $子程序名 来调用子程序

$ subpro;
sub subpro{
    print "这是子程序"
}
若先定义后调用可省略 $ 

(3)返回值

Perl没有return语句,它返回的是子程序代码里最后一行代码的值。

sub subpro{
     1+2;
}
print subpro;
# 程序输出 3

(4)参数传递

Perl子程序内部采用$_ 数组来单个参数,用@_来接收多参数列表。若需要接收多参数列表的第一个参数则采用 @_[0]的形式,也可以直接使用数组接收整个参数列表。

sub subpro1{
    @ array = @_;
}

sub subpro2{
    $a = $_;
}

subpro1(1);
subpro2(1,2,3);

(5)子程序变量作用域

子程序中局部变量的定义有my和local两种方法。my定义的变量只在该子程序中存在;而local定义的变量可以存在该子程序和该子程序调用的子程序中。

sub sub_1{
    $b = 2;
}

sub sub_2{
    my $a = 1;
    local $b = 2;
    sub_1;
}


三、常用函数库

Perl提供一些常用的系统函数接口方便用户使用。

1、substr

substr( 目标字符串  ,  起始下标  ,  结尾下标)  获得目标字符串的一个子串。

2、getcwd

获得当前程序运行的目录,返回一个字符串。

3、lc

lc( 目标字符串 ) 获得目标字符串的小写版本。

use Cwd;

my $dir = getcwd;
my $driver = lc(substr($dir,0,1));
print $driver
# 输出当前硬盘盘符

4、open

(1)语法

open (FILEHANDLE, EXPR, LIST)
open (FILEHANDLE, EXPR)
open (FILEHANDLE)

(2)作用

将EXPR目录指向的文件读到FILEHANDLE句柄中。

(3)返回值

0 - 失败
1 - 成功

(4)模式

EXPR可以有如下几种种模式:

"EXPR"        以只读模式打开文件.
">EXPR"       以写模式打开文件.
">>EXPR"      以追加模式打开文件,写和追加的区别在于写模式将原文件覆盖,而追加模式则在文件末尾处添加内容.
"+>EXPR"      以读和写方式打开文件.
"+>>EXPR"     以读和追加方式打开文件.


5、die

(1)定义

die LIST

(2)作用

该函数作用是停止解释程序的运行,并输出LIST字符串,通常用于监控当前行代码的异常。

P.S.1:如果LIST字符串中含有"$!"标识符标记的变量,则接着输出该变量的值和调用。

P.S.2:如果LIST字符串没有换行符,则会接着在字符串后输出一条消息:died at scriptname line xxx

(3)返回值

my $Register = "SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment";
my ($hkey,$type,$sys_path);
$HKEY_LOCAL_MACHINE->Open($Register,$hkey)|| die "open: $!";

# 如果注册表打开失败,程序输出“open:0 died at scriptname line xxx”

6、split

split (字符串) 该函数将字符串按特定格式进行拆分,并存入数组当中。

my @a = split(';',$sys_path);

7、localtime

(1)语法

localtime(EXPR)

(2)作用

转换EXPR指定的时间,如果不带EXRP,则转换当前时间。

(3)返回值

在标量上下文中,它返回一个字符串的形式: Thu Sep 21 14:52:5

在列表上下文中,返回的各个组件值 (seconds, minutes, hours, day of month, month, year, day of week, day of year, daylight savings time)。


8、chdir

(1)语法

chdir(EXPR)

chdir

(2)作用

改变当前的工作目录到EXPR, 或如果没有指定,则到用户的主目录。

(3)返回值

0 - 失败 

1 - 成功


9、glob

(1)语法

glob (EXPR)
glob

(2)作用

返回EXPR的文件的列表,EXPR不指定路径则为当前目录。

若省略EXPR,则默认从$_(也就是子程序参数)读入。

(3)返回值

在标量上下文错误返回undef,否则第一个文件的扩展名列表
在列表上下文中的空列表上的错误,否则列出扩展文件名。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值