require 5.006
当版本号小于 5.006 的时候,会返回失败,从而导致模块加载失败。
所以它的作用就是保证模块调用环境的 Perl 版本。
our 和 my 一样,都是对变量的声明,
不过 our 声明的是包全局变量,
而 my 声明的是词法变量。
不过,经过 our 声明的变量,它会变得像一个词法变量一样,
其实这也是 our 存在的目的:用来欺骗 strict pragma,使 strict 以为它是一个词法变量,其实却不是。
有一个简单的办法可以理解 our:
1,你就把 our 声明的变量和 my 声明的当成一样。
2,记住 our 和 my 的区别:our 声明的是一个包全局变量,因此在符号表中存储(可以通过全限定在任何地方访问),而 my 声明的
是一个真正的词法变量,只能在闭合块中访问。
-------------------------------------
其实,our 的出现有它的历史,
Perl 和别的语言不同,可以随便声明变量,
在 Perl 4 那个时代,根本就不需要 my 什么的,
随便写个名字,就是变量了。
在 Perl 5 中仍然如此,除非你用 my 明确声明为词法变量,否则所有的变量都是(包)全局变量,而且可以不声明直接使用。
但是,这样有个坏处,那就是万一不小心写错名字了,或者解符号引用的时候,字符串运算错了,都会造成很多麻烦(因为按照 Perl 5 语法,这
些都是正确的,其结果就是产生一个新的变量,很显然,这不是你想要的目的。)
所以,为了解决这些问题,在 Perl 5 中就引入了 strict 和 warnings 两个 pragma,它们的作用,就是限制变量不
声明直接使用,
经过 strict 和 warnings 限制后,所有没有声明的直接使用的变量都会报错。但是 my 声明的变量又是局部变
量,local 又不能创造变量,
所以,我们就没法使用全局变量了(注1),
因此就又引入了 our,our 的作用就是声明一个全局变量,但是让 strict 和 warnings 以为它是词法变量,因
此 our 声明的变量也是词法作用域的。但是实际上它是全局变量。
注1:
如果不使用 our,我们有两种办法可以创建全局变量:
1,用 no strict "vars" 临时关掉 strict pragma,声明完了再用 use strict "vars" 打开。
2,用变量的全限定名称,如 $main::var 或者 $foo::bar 这样子。
声明:
以上提到的“全局变量”这个字眼都表示“包全局变量”。
------------------------
1
:
Perl
真假简单规则:
数字
0
为假
空的字符串(“”)和字符串“
0
”
为假
为定义值
undef
为假
其他东西均为真
2
:
perl
相关控制语句学习
Last’
:退出当前循环
Next
:使得控制权被重新传递到循环的顶部,同时下一循环继
续进行
Exit
:
Perl
退出语句
3
:
Perl
数据列表的三种表示方法:列表,数组与哈希结构
Perl
中数组变量表示:
@name
qw
运算符:
qw( apples oranges 45.6 $x)
等价于
qw(‘apples’,’oranges’,’45.6’,’$x’)
定义数组:
@boy = qw(Greg Peter Bobby)
print
“@array”;
打印
@array
中的所有元素
print
scalar(@array)
;计算
@array
数组的元素数量
(其中,
scalar
是个特殊伪函数,强制参数在变量上下文中计算)
注:在引用各个元素之前,数组不一定需要存在
寻找数组结尾的两种方法:
A
:特殊变量,形式是
$#arrayname,
返回数组的最后一个有效索引的号码。
B
:在期望存在标量的位置上使用数组变量,如:
$size
= @array;
4
:
@foo=qw(water pepsi coke
lemonade);
$a =
@foo;
//$a
包含数字
4
$b=
$#foo;
//$b
包含数字
3
Print
“$a\n”;
Print
“$b\n”;
5
:遍历数组:
foreach
$cone (@flavors)
{
Print
“I’d like a cone of $cone\n”;
}
此代码中,变量
$cone
设置为
@flavors
中的各个值。
注:
foreach
与
for
语句功能相同,互相之间可以替换使用。
6
:
数组与变量之间的转换:
Split
函数:标量转换为数组
Join
函数:数组转换为变量
Split
函数格式:
Split
函数包含两个参数:第一个参数为模式,第二个为要分割的
标量。
sp
:
@words=split(/ /,”the quick
brown fox”)
;
注:
@words
包含各个单词。
sp:
$numbers=join(‘,’,(1.10));
注:将字符串
1
,
2
,
3
,
…10
赋予
$numbers
7
:数组排序函数介绍
A
:
sort()
函数
B
:飞船运算符
< = >
:只能比较数字
C
:
cmp
运算符:比较字符串
8
:
reverse
函数
功能:对字符串的字符进行倒序操作。
Sp
:
@liens=qw(I do not like greem
eggs and ham);
Print
join(‘ ‘, reverse @lines);
9
:
Perl
的文件操作:
打开句柄:
Open
(filename
,
pathname) || die “$!”;
成功返回一
个非
0
值,失败返回
undef
(假)。其中
die
函数用于终止
perl
程序的运行。
关闭文件句
柄:
Close (filename);
Perl
接
受反斜杠或正斜杠的
UNC
路径名,
sp:
open(MYTEXT,”c:\\windows\\users\\pierce\\novel.txt”)||die;
open(MYTEXT,”c:/windows/users/pierce/novel.txt’)||die;
10
:读取文件:
一用文件输
入运算符,二是尖括号运算符
<>
sp:open(MYTEXT,”myfile”)|| die “can not open myfile:$!”;
$line =<MYTEXT>;
读取文件句柄的快捷方式是:
while
循环。
While
(
<MYTEXT>
)
{
Print $_;
}
注:
while
循环负责吧输入行赋予
$_,
并确保文件结束,此种特性只有
while
循环才有。
写入文件:
Open(filename,”>pathname”)
Open(filename,”>>pathname”)
区别:
>
告诉
perl
,
pathname
设定的文件应该被用新数据改写,而现有数据被删除,同时
文件句柄是打开的,用于写入。
>>
告诉
perl
打开该文件,新数据附加到该文件的结尾处。
注:写入文
件后必须关闭文件句柄,写入的文件才生效。
11
:模式匹配
元字符是指改变模式匹配运行特性的字符。
简单匹配模式:
m/ /
模式匹配的四个原则:
1)
匹配从目标字符串的左边开始,逐步向右边匹配
2)
当整个模式与目标字符串相匹配时,模式匹配才返回真
3)
目标字符串中第一个能匹配的字符串首先匹配
4)
进行第一次最大字符数量的匹配
12
:元字符简介:
圆点
.
:用于匹配除了换行符外的任何单个
字符。(单个不包括多个或
0
个)
元字符前面加上
\,
元字符就可以纳入正则表达式。
+
通配符:使前面的字符与后面的字符至少匹配一次
,也可以匹配若干
次。
*
通配符:使前面的字符可以进行
0
次或若干次匹配
?通配符:使前面的字符进行
0
次或一次匹配(最多匹配一次)
{}
通配符,如:
pat{n,m},
其中,
n
是最小匹配次数,
m
是最大匹配次数。
注意:不能同时省略
n
与
m
.*
通配符:可以用来匹配任何东西。
举例:模式
/c?ola/
可以匹配
cola
和
ola
,但是不能与
coola
匹配,多出的
c
需要匹配两次,模式
/c*ola/
可以匹配
cola,ola
和
ccola
。
13
:
perl
字符类:
用
[]
将字符括起来,匹配时,字符类中的所有字符被视为单个字
符。
如:【
abcde
】:用于匹配
a,b,c,d,e
中的任一字符
【A-
Za-z
】
{5}
:用于匹配任何一组
5
个字符
14
:位置通配符:
^
:位于开头的插入符号
^
,表示正则表达式只匹配一行开头的字符
$
:位于结尾的美元字符使模式只匹配一行结尾的字符
15
:替换运算符:
形式如下:
s///.
语法如下:
S/searchpattrern/replacement/
;
替换运算符用于默认搜索
$_
,找出
searchpattern
,用
replacement
来替换。
16
:
perl
程序
while ($line =
<FILE>)
{
if ($line =~
/http:/)
{
print $line;
}
}
其中,=~符号是模式绑定
操作符,告诉
perl
在
$line
中寻找匹配正则表达式
”http:”
程序
2
:
next
LINE if $line =~ /^#/;
表示:当遇到#开头的行,则
跳到
LINE
循环的下一次循环。
17
:
perl
中常见的字母字符类型
名字
ASCII
代码
代码
空白
[\t\n\r\f]
\s
词
[a-zA-Z_0-9]
\w
数字
[0-9]
\d
其中,这三个简写只匹配单个
字符。
可以用
\w+\
来匹配一个单词。
如:
/bam{2}/
:匹配
”bam”
/(bam){2}/
:匹配
”bambam”
18
:最小匹配
可以在量词后面加上一个问号
表示最小匹配。
如:
/.*?:/:
此处的
.*?
现在表示尽可能少的匹配字符。
19
:模式修饰词
修饰词
含义
/i
忽略字符的大小写
/s
令
.
匹配换行符并忽略不建议使用的
$*
变量
/m
令
^
和
$
匹配下一个嵌入的
\n
/x
忽略大多数空白并允模式中的注释
/0
只编译模式一次
/g
全局地查找所有匹配
/cg
在
/g
匹配失败后允许继续查找
/e
把右边当作一个表达式来计算
应用举例:
m/\w+:(\s+\w+)\s*\d+/;
等价于:
m
{
\w+;
#
匹配一个词和一个冒号
{
#
分组开始
\s+
#匹配一个或多个空白
\w+
#匹配另一个单词
}
#分组结束
\s*
#匹配零或更多空白
\d+
#匹配一些数字
}x;
分享到:
相关推荐
适合想学习Perl语言的人;语法参考;
书中穿插有perl语法形成的历史和原因,使你能充分感受到perl语言的文化,这也是perl流行的原动力。本书行文流畅,各知识点介绍到位,令人很容易明白,达到入门点睛的效果。但本书的作用也就是入门而已,目的很明确,...
Perl 学习手札,这本书介绍了perl的基本语法及perl的一些用法,想了解perl的就看一看
perl学习笔记,介绍perl的常用语法及例子
PERL CGI简介及指令示范 作者: 蔡奇玉、连振汉、张志强 (2001-08...6.3 Perl语法介绍 6.3.1 Perl语言的变量 一、纯量变量(Scalar Variables)的用法 二、数组(Arrays)的用法 三、关联数组(Associative arrays)的用法
非常实用的Perl编程教程,从基本的Perl语法讲起到Perl的高级应用,教程中涵盖了诸多知识点,全面到位,还包含了很多的demo,是学习Perl的必备资料.
perl语言的一些例子,有助于更好地学习perl语言语法,架构
基础篇,主要介绍 Perl 的基本语法、数组、哈希、输入输出、函数等。 高级篇,介绍 Perl 的正则表达式、模块 module、面向对象 OOP、 多进程等。 实战篇,介绍 Perl 在芯片设计、验证中的应用。 另外,修正了一些...
该文档主要介绍了Perl语言的基本语法及正则表达式的含义
Perl 不会强迫你学习新的语法和语意,Perl 改从许多其它你已经熟悉的语言里(比如 C, awk, BASIC 和 Python, 英文,希腊语等)借来语法。实际上,任何程序员都可以从书写良好的 Perl 代码段中读懂它的含义。 ...
有关于perl语言的比较详细的资料详细介绍perl的语法和经验总结
perl 语言,语法介绍,从安装到精通使用,从基础知识说起,既可以当作书本学习,又作为手册可以查阅
千锋教育 www.qfedu.com 精品课程 全程面授 做真实的自己-用良心做教育 Python 教程入门到精通:千锋 Python 语法基础学习视频教程 Python 编程语言虽然不 Perl,C 和 Java 等语言有许多相似之处,不此同 时也存在...
单兴华CTO-学习Mysql经典教程-第03章MySQL SQL 语法及其用法.pdf 单兴华CTO-学习Mysql经典教程-第04章查询优化.pdf 单兴华CTO-学习Mysql经典教程-第05章MySQL 程序设计介绍.pdf 单兴华CTO-学习Mysql经典教程-第06章...
perl 入门 经典提练。...书中穿插有perl语法形成的历史和原因, 使你能充分感受到perl语言的文化,这也是perl流行的原动力。本书行文流畅,各知识点 介绍到位,令人很容易明白,达到入门点睛的效果。
单兴华CTO-学习Mysql经典教程-第03章MySQL SQL 语法及其用法.pdf 单兴华CTO-学习Mysql经典教程-第04章查询优化.pdf 单兴华CTO-学习Mysql经典教程-第05章MySQL 程序设计介绍.pdf 单兴华CTO-学习Mysql经典教程-第06章...
Python 基础语法 " 菜鸟教程 Python 基础语法 Python 语言与 Perl,C 和 Java 等语言有许多相似之处。但是,也存在一些差异。 在本章中我们将来学习 Python 的基础语法,让你快速学会 Python 编程。 第一个 Python ...
语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的...
语法吸收了C语言,Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP独特的语法混合了C,Java,Perl和PHP的语法。它可以比CGI或者Perl更快速地执行动态网页。程序嵌入到HTML(标准通用标记语言下一...
WAMP配置httpd.conf允许外部访问 在电脑上开启Apache服务后,如何让外部网络访问呢? 一:httpd.conf文件更改 路径:D:\ wamp1 \ bin \ apache \ apache2.4.9 \ conf \ httpd.conf(根据安装目录自行修改) ...