perl 简明教程 perl教程集合

参考:http://shouce.jb51.net/perl5/
网站环境配置:http://www.jb51.net/article/74005.htm

Perl的基本语法 http://www.jb51.net/shouce/Perl.htm

前言:perl是什么,干什么用的?perl原来设计者的意图是用来处理 字符的,80%的强项是处理字符,当然其它的很多都可以。现在很多网页也是用perl的,通常需要CGI环境,比如 $char =~ /语言/ ,意思是查找含有“语言”这两个字的字符串。它还能做unix和linux系统管理,文件内容处理(基于awk和sed等工具的功能),其他好多你想做的事。

一、perl环境配置

1.获取perl
  Perl通常位于/usr/local/bin/perl或/usr/bin/perl中。你可以在Internet用匿名FTP免费得到它,如ftp://prep.ai.mit.edu/pub/gnu/perl-5.004.tar.gz

2.安装过程为:
      (1)解压:
      $gunzip perl-5.004.tar.gz
      $tar xvf - <perl-5.004.tar.gz
      (2)编译:
      $make makefile
      (3)放置:
      将编译生成的可执行文件拷贝到可执行文件通常所在目录,如:
      $copy <compiled excutable file> /usr/local/bin/perl

3.运行
  用文本编辑器编辑好你的Perl程序,加上可执行属性:$chmod +x <program>就可以执行了:$./<program>。如果系统提示:"/usr/local/bin/perl not found",则说明你没有安装成功,请重新安装。
注:你的程序的第一行必须为#!/usr/local/bin/perl(perl所在位置)。

4注释:
      注释的方法为在语句的开头用字符#,如:
      # this line is a comment
      注:建议经常使用注释使你的程序易读,这是好的编程习惯。

二、常量、变量等问题

1.单引号与双引号
  双引号内的字符串中支持简单变量替换  如:$text = "This text contains the number $number.";
  双引号内的字符串中支持转义字符
  单引号字符串与双引号字符串有两个区别,一是没有变量替换功能,二是反斜线不支持转义字符。
2.重复和联结
重复:print "t" x 5  (会输出5个t,注意:其中x为英文字母小写x)
联结:$a.="bc"    (相当于连等于)
3.简单变量、数组、列表
简单变量:用$声明,如:$a="hello";
数组:用@声明,如:@arr=('a','b','c');
列表:列表是包含在括号里的一序列的值,可以为任何数值,也可为空,如:(1, 5.3 , "hello" , 2),空列表:()

三、文件操作

1.打开文件:如open (MYFILE, "file1") || die ("Could not open file");MYFILE为声明的文件句柄,file1为文件名/文件路径,整行代码意为:如果打开失败,则输出"Could not open file";
   关闭文件:当文件操作完毕后,用close(MYFILE); 关闭文件。
2.读文件
  语句$line = <MYFILE>;从文件中读取一行数据存储到简单变量$line中并把文件指针向后移动一行。<STDIN>为标准输入文件,通常为键盘输入,不需要打开。
  语句@array = <MYFILE>;把文件的全部内容读入数组@array,文件的每一行(含回车符)为@array的一个元素。

#!/usr/bin/perl
open(MYFILE,'1.txt');
@arr = <MYFILE>;
print @arr;

3.写文件
  形式为:
     open(OUTFILE, ">outfile");
     print OUTFILE ("Here is an output line.\n");
  注:STDOUT、STDERR为标准输出和标准错误文件,通常为屏幕,且不需要打开。
4.判断文件状态

1、文件测试操作符
  语法为:-op expr,如:
    if (-e "/path/file1") {
    print STDERR ("File file1 exists.\n");
    }

文件测试操作符

操作符 描述
-b 是否为块设备
-c 是否为字符设备
-d 是否为目录
-e 是否存在
-f 是否为普通文件
-g 是否设置了setgid位
-k 是否设置了sticky位
-l 是否为符号链接
-o 是否拥有该文件
-p 是否为管道
-r 是否可读
-s 是否非空
-t 是否表示终端
-u 是否设置了setuid位
-w 是否可写
-x 是否可执行
-z 是否为空文件
-A 距上次访问多长时间
-B 是否为二进制文件
-C 距上次访问文件的inode多长时间
-M 距上次修改多长时间
-O 是否只为“真正的用户”所拥有
-R 是否只有“真正的用户”可读
-S 是否为socket
-T 是否为文本文件
-W 是否只有"真正的用户"可写
-X 是否只有"真正的用户"可执行
注:“真正的用户”指登录时指定的userid,与当前进程用户ID相对,命令suid可以改变有效用户ID。

例:
    unless (open(INFILE, "infile")) {
    die ("Input file infile cannot be opened.\n");
    }
    if (-e "outfile") {
    die ("Output file outfile already exists.\n");
    }
    unless (open(OUTFILE, ">outfile")) {
    die ("Output file outfile cannot be opened.\n");
    }
  等价于
    open(INFILE, "infile") && !(-e "outfile") &&
    open(OUTFILE, ">outfile") || die("Cannot open files\n");

四、模式匹配:

1.概念:模式指在字符串中寻找的特定序列的字符,由反斜线包含:/def/即模式def。其用法如结合函数split将字符串用某模式分成多个单词:@array = split(/ /, $line);
2.匹配操作符 =~、!~
   =~检验匹配是否成功:$result = $var =~ /abc/;若在该字符串中找到了该模式,则返回非零值,即true,不匹配则返回0,即false。!~则相反。

五、控制结构
(1)、条件判断:if()elseif()else();
(2)、循环:
  1、while循环
  2、until循环
  3、for循环
  4、针对列表(数组)每个元素的foreach循环

open(MYFILE,'1.txt');
@arr = <MYFILE>;
foreach $str (@arr){
 print $str;
}

5、do循环
  6、循环控制:退出循环为last,与C中的break作用相同;执行下一个循环为next,与C中的continue作用相同;PERL特有的一个命令是redo,其含义是重复此次循环,即循环变量不变,回到循环起始点,但要注意,redo命令在do循环中不起作用。
  7、传统的goto语句:goto label;
(3)、单行条件
  语法为statement keyword condexpr。其中keyword可为if、unless、while或until,如:
    print ("This is zero.\n") if ($var == 0);
    print ("This is zero.\n") unless ($var != 0);
    print ("Not zero yet.\n") while ($var-- > 0);
    print ("Not zero yet.\n") until ($var-- == 0);
    虽然条件判断写在后面,但却是先执行的。

六、子程序
(1)、定义
  子程序即执行一个特殊任务的一段分离的代码,它可以使减少重复代码且使程序易读。PERL中,子程序可以出现在程序的任何地方。定义方法为:
  sub subroutine{
    statements;
  }
(2)、调用
  调用方法如下:用&调用
       &subname;
       ...
       sub subname{
          ...
       }
七、文件系统:与unix紧密相关,参考:http://shouce.jb51.net/perl5/perl11.htm

OTHER:
管道:可以将前一执行的结果作为后面的参数,比如
env | grep EDITOR
就可以删选出环境变量中EDITOR的值

(0)

相关推荐

  • perl 简明教程 perl教程集合

    参考:http://shouce.jb51.net/perl5/ 网站环境配置:http://www.jb51.net/article/74005.htm Perl的基本语法 http://www.jb51.net/shouce/Perl.htm 前言:perl是什么,干什么用的?perl原来设计者的意图是用来处理 字符的,80%的强项是处理字符,当然其它的很多都可以.现在很多网页也是用perl的,通常需要CGI环境,比如 $char =~ /语言/ ,意思是查找含有"语言"这两个字的

  • Windows10下安装配置 perl 环境的详细教程

    Perl 是 Practical Extraction and Report Language 的缩写,可翻译为 "实用报表提取语言". Perl 是高级.通用.直译式.动态的程序语言. Perl 最初的设计者为拉里·沃尔(Larry Wall),于1987年12月18日发表. Perl 借用了C.sed.awk.shell脚本以及很多其他编程语言的特性. Perl 最重要的特性是Perl内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN. 一.安装Perl 语言编译器 对于

  • 什么是Perl?编程语言Perl详细介绍

    Perl 最初的设计者为拉里·沃尔(Larry Wall),它于1987年12月18日发表.Perl借取了C.sed.awk.shell scripting以及很多其他程序语言的特性.Larry Wall在新闻组comp.sources.misc发布了Perl脚本语言1.0版,当时他是Unisys公司的一名程序员.Perl借鉴了sh.Awk和Sed等脚本语言的特性,试图成为一个能简化报告处理的通用 Unix脚本语言. Perl 2在1988年发布,增加了更多特性,拥有更好的正则表达式引擎.Per

  • Perl语法中Perl运算符用法指南

    Perl语法 Perl运算符简介 1.Perl运算符 1.1 算数运算符 Perl固然在变量与数据范例都和C大不不异,然而它的运算符和C险些不异,除了C的范例转换运算符type,指针引用运算符*ptr和布局成员选择符,其他C的运算符险些完全呈现在Perl里,Perl新增了几个新运算符,好比在字符处置方面. ◆Perl到今朝撑持的算数运算符有一些几种: +加法运算符-减法运算符*乘运算符/除运算符(只对浮点数运算)%取模运算符(只对整数运算) 下面给出Perl算数运算的一些实例: $x=2.5;$

  • VMware中ubuntu虚拟机与windows的端口映射共享一个IP地址的设置教程(图文教程)

    在ubuntu虚拟机中,运行了meteor的后台程序,需要终端进行连接,需要进行ubuntu虚拟机与windows的端口映射(虚拟机与主机共享IP地址). 下面为设置步骤: 1.点击编译,虚拟网络编辑器 2.在虚拟网络编辑器界面,点击下方的更改设置,获取管理员权限 3.选择"NAT模式",在下方VMnet信息中,点击"NAT设置(s)..." 4.点击添加,添加一条端口转发信息 5.第4步,点击添加按钮之后,跳出映射传入端口,输入相关信息,主机端口,类型,虚拟机IP

  • Xftp的下载和安装教程(图文教程)

    在Windows系统下,如果想和Linux系统进行文件传输,可以使用Xftp 工具,本篇将介绍Xftp 6下载与安装的过程 软件下载地址:http://www.netsarang.com/download/software.html 点击免费授权页面 随便输入名字  但是邮箱地址一定要正确.可以根据需要勾选Xshell和xftp.. 接收到邮件就可以点击链接下载了. 下载压缩包后,双击打开即可 点击下一步 选择我接受协议,点击下一步 用户名和公司名称可以随意填写 选择安装目录 到此这篇关于Xft

  • windows下gitbash安装教程(小白教程)

    下载安装 1.从git官网下载一个git安装包,官网下载地址http://www.git-scm.com/download/ 2.双击安装程序,进入欢迎界面点击[Next >] 3.阅读协议,点击[Next >] 4.选择安装位置,点击[Next >] 5.选择安装组件:这里可以使用默认选项,点击[Next >] 图标组件(Additional icons):选择是否创建桌面快捷方式 桌面浏览(WindowsExplorer integration) 使用Git Bash方式,sh

  • Python Matplotlib简易教程(小白教程)

    简单演示 import matplotlib.pyplot as plt import numpy as np # 从[-1,1]中等距去50个数作为x的取值 x = np.linspace(-1, 1, 50) print(x) y = 2*x + 1 # 第一个是横坐标的值,第二个是纵坐标的值 plt.plot(x, y) # 必要方法,用于将设置好的figure对象显示出来 plt.show() import matplotlib.pyplot as plt import numpy as

  • C++ STL入门教程(6) set(集合)的使用方法

    一.简介 集合(Set)是一种包含已排序对象的关联容器,不允许有重复元素. 二.完整程序代码 /*请务必运行以下程序后对照阅读*/ #include <set> #include <iostream> using namespace std; int main() { ///1. 初始化 set<int> num; set<int>::iterator iter; cout << num.max_size() << endl;///s

  • ASP.NET与MySQL数据库简明图示入门教程

    作者: CRYSTAL编译 在ASP时代,如果我们要建立一个数据库驱动的web站点,那么你可以选择环很多钱的微软SQL SERVER数据库或者选择要花很多时间来寻找达到性能和稳定性统一的ACCESS数据库,但在.NET时代你有另一种选择,那就是:MySQL数据库 什么是MySQL数据库? MySQL数据库是一种开放源代码的数据库,通过获得授权来保持源代码的官方支持,同时可以自由修改源代码,目前许多公司和组织都采用了这种数据库.对此详细信息您可以访问MySQL的官方站点. 第一步 下载和安装 与大

随机推荐