perl基础入门

来源:互联网 发布:微课录制软件 编辑:程序博客网 时间:2024/04/29 17:53

perl简述

1、Perl 一般被称为“实用报表提取语言”(Practical Extraction and Report Language,脚本语言。Perl具有高级语言(如C)的强大能力和灵活性。Perl借取了C、sed、awk、shell scripting以及很多其他程序语言的特性。其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。
2、你的程序的第一行必须为#!/usr/bin/perl(perl所在位置)。Perl通常位于/usr/local/bin/perl或/usr/bin/perl中。

3、 注释的方法为在语句的开头用字符#。

#!/usr/bin/perl

use strict;

use Encode;

#for perlApp.

use Encode::CN;


简单变量

1、变量(整型、浮点、字符串)定义,以$号开头,如:

my $num1 =1; #局部 

our $num2 =100; #全局

print   "num1:$num1\n"; #打印

1)惯用C的程序员要注意,在PERL中,字符串的末尾并不含有隐含的NULL字符,NULL字符可以出现在串的任何位置。

2)引号内的字符串中支持简单变量替换与反斜杠\转义字符功能。因此,perl字符串不是一个像C语言中的简单存储单元,而是一个简单表达式。


2、数组定义,以@开头,如:our @array = (1,2,3);  

         数组元素调用 $array[index],其中index表示数组下标,如上例,$array[0]的值是1 


3、散列(哈希数组) 

1)散列(哈希数组)定义,以%开头,如:%hash=("a",1,"b",2);

  散列调用 $hash{keys},其中keys表示键值,多用字符串表示。

注意:hash的key必须具有唯一性,但value可以不唯一,为此hash的key经常被用来做唯一化处理。

如上例中keys为"a", "b", vaules是keys对应的值,为1,2。$hash{"b"}的值是2。


2) keys()函数返回关联数组下标的列表;

%fruit = ("apples", 9,

          "bananas", 23,

          "cherries", 11);

@fruitsubs = keys(%fruits);

内嵌函数values()返回关联数组值的列表;

%fruit = ("apples", 9,

           "bananas", 23,

           "cherries", 11);

@fruitvalues = values(%fruits);


3)关联数组循环的两种方式:

A)利用keys:

%records = ("Maris", 61, "Aaron", 755, "Young", 511);

foreach $holder (keys(%records)){

  $record = $records{$holder};

B)Perl提供一种更有效的循环方式,使用内嵌函数each(),如:

while (($holder, $record) = each(%records)) {

  # stuff goes here


操作符

数值比较操作符:>、=、<等;

字符串比较操作符描述: 

lt小于 gt大于 eq等于 le小于等于 ge大于等于 ne不等于 

cmp比较,返回 1, 0, or -1 


常用系统函数:

$part = substr($string, $initial_position, $length); 

substr、index、split、join

mkdir、opendir、unlink

open、close、seek

print、chomp、localtime/time

pack/unpack

values/keys


字符串操作函数:

1、Perl字符串处理:http://itsunmoon.iteye.com/blog/1744225

                               http://blog.csdn.net/liuzhoulong/article/details/6794342                               

2、perl字符串处理函数:http://blog.csdn.net/aldenphy/article/details/4066007


文件结构

一、打开、关闭文件
  语法为:open (filevar, filename),其中filevar为文件句柄,filename为文件名,其路径可为相对路。
  打开文件时必须决定访问模式,在PERL中有三种访问模式:读、写和添加。要注意的是,不能对文件同时进行读和写/添加操作。

读模式形式:open(infile,"<infile");

写模式形式为:open(outfile,">outfile");

添加写模式形式为:open(appendfile, ">>appendfile");

关闭:close pf_in;
二、读文件 
  语句$line = <MYFILE>;  #从文件中读取一行数据存储到简单变量$line中并把文件指针向后移动一行。<STDIN>为标准输入文件,通常为键盘输入,不需要打开。默认读单行赋给系统变量$_.
  语句@array = <MYFILE>;把文件的全部内容读入数组@array,文件的每一行(含回车符)为@array的一个元素。
三、写文件
  形式为:
    open OUTFILE, ">outfile";
    print OUTFILE ("Here is an output line.\n");
  注:STDOUT、STDERR为标准输出和标准错误文件,通常为屏幕,且不需要打开。

1、perl中文件操作:http://blog.sina.com.cn/s/blog_6072546301016fz7.html


模式匹配

1.形式:由反斜线包含:/def/即模式def。其用法如结合函数split将字符串用某模式分成多个单词:@array = split(/ /, $line);

2.操作符=~,检验匹配是否成功:

   $result = $var =~ /$Reg/;

若在该字符串$var中找到了该模式$Reg,则返回非零值,即true,不匹配则返回0,即false。!~则相反。

注意:@result = $var =~ /$Reg/;结果保存于数组@result 中。

3.常用作字符串的查找与替换。

   $strline =~ s/s+//g; #去除空格


控制结构

1)while;for;foreach;until;

2)退出循环为last,与C中的break作用相同;执行下一个循环为next,与C中的continue作用相同.


引用

引用就是指针,可以指向变量、数组、哈希表(也叫关联数组)甚至子程序,就是其地址。

引用定义,反斜线操作符\与C语言中传递地址的操作符&功能类似。

my $variavle = 22;

my $pointer = \$variable; #引用:\$variable

$$pointer = 100;  #引用指向的变量的值:$variavle= 100

print $variavle;

Perl中的数组和哈希表始终是一维的。因此,数组和哈希表只保存标量值,不直接存贮数组或其它的复杂数据结构。

数组的成员要么是数(或字符串)要么是引用。

如果$pointe为指向变量$var的指针,$$pointe即为变量$var的值;

如果$pointer的值为一个数组@arr的指针,@$pointer即为该数组@arr,则通过形式@$pointer来访问数组中的元素:$$pointer[0],即是$arr[0]。


子程序

&sub1(&number1, $number2, $nubmer3); #调用  ...
  sub sub1{
    my($number1, $number2, $number3) = @_; #定义.参数传入
    ...
  }


perl常用特殊变量列表

perl常用特殊变量列表:http://blog.csdn.net/caz28/article/details/7243660

perl 内置变量总结[FW]:http://hi.baidu.com/zhutov/item/9ba5b4f4132e61c80dd1c8c3


参考资料:

1、perl5教程:http://wenku.baidu.com/view/d694388c84868762caaed5f7.html

                       http://www.cbi.pku.edu.cn/chinese/documents/perl/index.htm

                       http://man.ddvip.com/web/perl/perl1.htm

2、Perl语言入门(第四版中文版):http://wenku.baidu.com/view/1573cc0f844769eae009eda1.html

      Perl实例精解(第四版)

4、perl 帮助文档 perldoc:http://blog.sina.com.cn/s/blog_4be5711f01018pop.html

5、perl常用函数:http://wenku.baidu.com/view/746d31b069dc5022aaea0092.html

     perl函数集:http://wenku.baidu.com/view/7d2a88165f0e7cd184253638.html

6、Perl 与 Python 之间的一些异同:http://www.ibm.com/developerworks/cn/linux/l-cn-perl2python/

7、Perl 编程格式指南:http://wenku.baidu.com/view/e0f7eaebb8f67c1cfad6b825.html


0 0