数据类型有:  标量$, 数组@,哈希%

数组声明 :  @hits= (25, 30, 40);  或者  @sites= qw/google taobao runoob/;

数组操作 pop, push, shift, unshif, splice(@ARRAY,OFFSET,LENGTH,LIST),   join, sort

合并数组, @numbers= (@odd, @even);  从列表中选择元素 @list= (5,4,3,2,1)[1..3];

哈希:   %data =('google'=>'google.com','runoob'=>'runoob.com','taobao'=>'taobao.com');

或者: %data =(-google=>'google.com',-runoob=>'runoob.com',-taobao=>'taobao.com');

判断元素是否存在, exists($data{'facebook'})

获取元素大小: $size= @keys; , 删除元素 delete$data{'taobao'};  增加元素 $data{'facebook'}= 'facebook.com';

foreach$a(@list) {print"a 的值为: $a\n";  }

运行符: =, +=, *=,%=,等 逻辑运行符  &&, ||, and, or, not, ++, --,  ('-' x 3) 输出为 ---

引号运算: q{abcd} 结果为 'abcd' , qq{abcd} 结果为 "abcd"

格式时间,获得当前时间:   use POSIXqw(strftime);    $datestring= strftime"%Y-%m-%d %H:%M:%S", localtime;

子程序(程序)

sub function { } 调用则是function();

参数:  子程序参数使用特殊数组 @_ 标明。因此子程序第一个参数为 $_[0], 第二个参数为 $_[1], 以此类推。

传递哈希:  当向子程序传递哈希表时,它将复制到 @_ 中,哈希表将被展开为键/值组合的列表。 my(%hash)= @_;   //转成哈希

返回值:  默认最后的值为返回值,  如果没有使用 return 语句,则子程序的最后一行语句将作为返回值

私有变量: my

临时变量 :  local,  我们可以使用 local 为全局变量提供临时的值,在退出作用域后将原来的值还回去

静态变量: state$count= 0; # 初始化变量,     不过在Perl中想要使用state必须在文件开头加上 use feature qw(state); 或者 use 5.010; 因为state功能是在5.010版本中才开始提供的。

perl引用

$scalarref =\$foo;# 标量变量引用

$arrayref =\@ARGV;# 列表的引用$hashref =\%ENV;# 哈希的引用$coderef =\&handler;# 子过程引用$globref =\*foo;# GLOB句柄引用

取消引用可以根据不同的类型使用 $, @ 或 % 来取消

perl格式化输出, 格式语法如下:

format FormatName=fieldline

value_one,value_two,value_three

fieldline

value_one,value_two

.

文件操作

open(DATA, "){print "$_";

}

模式描述

< 或 r

只读方式打开,将文件指针指向文件头。

> 或 w

写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

>> 或 a

写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

+< 或 r+

读写方式打开,将文件指针指向文件头。

+> 或 w+

读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

+>> 或 a+

读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

删除文件

unlink("/usr/runoob/test/file1.txt");

文件重命名rename ("/usr/runoob/test/file1.txt","/usr/runoob/test/file2.txt");

读入文件

$name = ;

print "网址:$name\n";

目录操作

#显示 /tmp 目录下所有以 .c 结尾的文件

$dir = "/tmp/*.c";@files = glob( $dir);foreach (@files){print $_ . "\n";

}

#显示 /tmp 和 /home 目录下的所有文件

$dir = "/tmp/* /home/*";@files = glob( $dir);foreach (@files){print $_ . "\n";

}

错误处理

die 函数类似于 warn, 但它会执行退出。一般用作错误信息的输出:

chdir('/etc') or die "无法切换目录";

warn 函数用于触发一个警告信息,不会有其他操作,输出到 STDERR(标准输出文件),通常用于给用户提示:

chdir('/etc') or warn "无法切换目录";

Carp 模块

在 Perl 脚本中,报告错误的常用方法是使用 warn() 或 die() 函数来报告或产生错误。而对于 Carp 模块,它可以对产生的消息提供额外级别的控制,尤其是在模块内部。

cluck() 与 warn() 类似,提供了从产生错误处的栈回溯追踪。

croak() 与 die() 一样,可以结束脚本。

confess() 与 die() 类似,但提供了从产生错误处的栈回溯追踪。

Perl 特殊变量

在迭代循环中,当前循环的字符串会放在 $_ 中, 然后 通过 print 输出。另外 print 在不指定输出变量,默认情况下使用的也是 $_。

$$ 运行当前Perl脚本程序的进程号

Perl 正则表达式

Perl的正则表达式的三种形式,分别是匹配,替换和转化:

匹配:m//(还可以简写为//,略去m)

替换:s///

转化:tr///

这三种形式一般都和 =~ 或 !~ 搭配使用, =~ 表示相匹配,!~ 表示不匹配。

$bar = "I am runoob site. welcome to runoob site.";if ($bar =~ /run/){print "第一次匹配\n";

}else{print "第一次不匹配\n";

}$bar = "run";if ($bar =~ /run/){print "第二次匹配\n";

}else{print "第二次不匹配\n";

}

替换, 例如我们将以下字符串的 "google" 替换为 "runoob": 格式如下:

s/PATTERN/REPLACEMENT/;

$string = "welcome to google site.";$string =~ s/google/runoob/;print "$string\n";

正则表达式变量

$`:匹配部分的前一部分字符串

$&:匹配的字符串

$':还没有匹配的剩余字符串

$string = "welcome to runoob site.";$string =~ m/run/;print "匹配前的字符串: $`\n";print "匹配的字符串: $&\n";print "匹配后的字符串: $'\n";

对象的创建和使用

subnew

{my $class = shift;my $self ={

_firstName=> shift,_lastName=> shift,_ssn=> shift,};#输出用户信息

print "名字:$self->{_firstName}\n";print "姓氏:$self->{_lastName}\n";print "编号:$self->{_ssn}\n";bless $self, $class;return $self;

}

使用创建的对象

$object = new Person( "小明", "王", 23234345);

Perl 里 类方法通过@ISA数组继承,这个数组里面包含其他包(类)的名字,变量的继承必须明确设定。

多继承就是这个@ISA数组包含多个类(包)名字。

Perl 包和模块

从一个包中访问另外一个包的变量,可通过" 包名 + 双冒号( :: ) + 变量名 " 的方式指定。

特殊变量 __PACKAGE__ 用于输出包名:

Perl语言提供了两个关键字:BEGIN,END。它们可以分别包含一组脚本,用于程序体运行前或者运行后的执行。

packageFoo;print "Begin 和 Block 实例\n";

BEGIN {print "这是 BEGIN 语句块\n"}

END {print "这是 END 语句块\n"}

Perl 模块是一个可重复使用的包,模块的名字与包名相同,定义的文件后缀为 .pm。

我们注意到 require 引用需要使用包名指定函数,而 use 不需要,二者的主要区别在于:

1、require用于载入module或perl程序(.pm后缀可以省略,但.pl必须有)

2、Perl use语句是编译时引入的,require是运行时引入的

3、Perl use引入模块的同时,也引入了模块的子模块。而require则不能引入,要在重新声明

4、USE是在当前默认的@INC里面去寻找,一旦模块不在@INC中的话,用USE是不可以引入的,但是require可以指定路径

5、USE引用模块时,如果模块名称中包含::双冒号,该双冒号将作为路径分隔符,相当于Unix下的/或者Windows下的\。 如: useMyDirectory::MyModule

特殊变量:

@_获得传得参数的值,$n= scalar(@_);可获得个数。

cdn perl_菜鸟教程perl总结相关推荐

  1. Perl教程_编程入门自学教程_菜鸟教程-免费教程分享

    教程简介 Perl入门教程 - 从基本到高级概念的简单简单步骤了解Perl,包括简介,环境,语法,数据类型,变量,标量,数组,哈希,IF ... ELSE,循环,运算符,日期和时间,子程序,引用,格式 ...

  2. 菜鸟教程 之 JavaScript 教程

    From:菜鸟教程 JavaScript:https://www.runoob.com/ W3School JavaScript 教程:http://www.w3school.com.cn/js/in ...

  3. python3菜鸟教程-Python3 循环语句

    Python3 循环语句 本章节将为大家介绍 Python 循环语句的使用. Python 中的循环语句有 for 和 while. Python 循环语句的控制结构图如下所示: while 循环 P ...

  4. python菜鸟教程字典-python教程菜鸟教程学习路线

    python教程菜鸟教程学习路线,需要学Python 环境搭建.Python 中文编码.Python 基础语法.Python 变量类型.Python 运算符.Python 条件语句.Python 循环 ...

  5. jQuery菜鸟教程03

    jQuery 遍历 什么是遍历? jQuery 遍历,意为"移动",用于根据其相对于其他元素的关系来"查找"(或选取)HTML 元素.以某项选择开始,并沿着这个 ...

  6. php validate,jQuery Validate | 菜鸟教程

    jQuery Validate jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方 ...

  7. Vue.js 教程---菜鸟教程

    文章目录 教程 安装 起步 模板语法 插值 指令 用户输入 过滤器 缩写 条件语句 循环语句 计算属性 监听属性 样式绑定 事件处理器 表单 组件 组件 - 自定义事件 自定义指令 钩子 路由( vu ...

  8. python教程菜鸟教程学习路线

    python教程菜鸟教程学习路线,需要学Python 环境搭建.Python 中文编码.Python 基础语法.Python 变量类型.Python 运算符.Python 条件语句.Python 循环 ...

  9. 正则表达式(菜鸟教程+精通正则表达式)未完结

    参考菜鸟教程和精通正则表达式一书,其中精通正则表达式里面的例子大多都是perl脚本的,工作中也用到perl脚本,还是能看懂的. 正则表达式在线生成工具:http://tools.jb51.net/re ...

最新文章

  1. Springboot 中 Mybatis 的使用
  2. sublime几个插件
  3. Guava之Ordering
  4. PAT B1034 有理数四则运算 (20 分)
  5. win10如何关闭F1~F12快捷键?
  6. 21 年前濒临倒闭的苹果是如何做到今天万亿市值的?
  7. 如何重置 Docker 里的 gitlab root 用户密码
  8. Leetcode 169 Majority Element
  9. 层叠性(HTML、CSS)
  10. 36 岁程序员应聘被公司领导直接拒绝;B 站面试官回应北邮校招中的不当言论
  11. mac安装mysql devel_Mac安装Mysql
  12. 手动修改美化7zip图标 - 附替换文件
  13. Windows动态库DllMain
  14. slot的使用方法详解
  15. PHP将图片剪切成圆形
  16. 2021年中职“网络安全“江西省赛题—B-1:系统漏洞利用与提权
  17. iOS wifi互传文件
  18. python小工具—图片转为字符txt
  19. getchar消除回车符号
  20. [QQ飞车]AMD双核CPU可以异常加速QQ飞车,此BUG堪比外挂

热门文章

  1. rdo远程桌面管理快捷键在哪里?
  2. matlab中计算标准差std函数
  3. HMC基金会Big Ma机器人同步代币HMC(希曼)将上线 PancakeSWAP
  4. LUNA16图片提取
  5. excel怎么批量添加单位平方米㎡
  6. 阿里的Java 开发,拿那么高工资,每天都在干啥?
  7. today JavaScript 笔记和案例
  8. 参数传递是什么?参数传递的是什么?
  9. 【技术综述】人脸表情识别研究
  10. Java实现设计模式之——单例模式