前端之家收集整理的这篇文章主要介绍了
第一章 Perl 概述,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
<pre name="code" class="sql">$fido = new Camel "Amelia";
if (not $fido){die "dead camel";}
$fido->saddle();
在这里,我们首选创建一个指向Camel对象的引用,并将它赋给变量$fido,
在第二行中,我们将$fido当成一个布尔值来判断它是否为真,如果它不为真,程序
将抛出一个异常。在这个例子中,这意味着new Camel 构造器创建Camel对象失败。
最后一行,我们将$fido作为一个引用,并调用Camel对象的saddle()方法。
@home=("counch","chair","table","stove");
[root@master Webqq]# cat k1.pl
@home=("counch","stove",1,2,3,4,5);
print "\@home is @home\n";
($a,$b,$c,$d)=@home;
print "\$a is $a\n";
print "\$b is $b\n";
print "\$c is $c\n";
print "\$d is $d\n";
[root@master Webqq]# perl k1.pl
@home is counch chair table stove 1 2 3 4 5
$a is counch
$b is table
$c is stove
$d is 1
() 小括号 数组
{} 大括号 hash
数据元素读取:
[root@master Webqq]# cat k5.pl
@a=qw/4 7 1 3/;
print "\$a[1] is $a[1]\n";
[root@master Webqq]# perl k5.pl
$a[1] is 7
hash 元素读取:
[root@master Webqq]# cat k6.pl
%hash=(a=>1,b=>5,c=>100);
print $hash{b};
[root@master Webqq]# perl k6.pl
5[root@master Webqq]#
spili 操作符:
[root@master ~]# cat p1.pl
($a,$c)=split(/,/,"vi,edit,plus");
print "\$a is $a\n";
print "\$b is $b\n";
print "\$c is $c\n";
[root@master ~]# perl p1.pl
$a is vi
$b is edit
$c is plus
=~ 模式绑定操作符
读取控制台输入:
[root@master ~]# cat p2.pl
while ($line =<>){
if ($line =~/http/){print "\$line is $line\n"}
}
[root@master ~]# perl p3.pl
http
ftp
[root@master ~]# cat p3.pl
open (FILE,"<","a.txt") or die $!;
while (<FILE>){
print if /http/i;
print if /ftp/i;
print if /ssh/i;
}
+是一个特殊字符,表位匹配+前面的内容一次或多次
. 点号 匹配所有的字符,除换行符外
* 表示0次或多次
?表示零次或一次
空白 [\t\n\r\f] \s
调字符 [a-zA-Z_0-9] \w
数字 [0-9] \d
最小匹配 非贪婪匹配
在新版本的Perl中,可以强制进行非贪婪匹配。
在量词后面加上一个问号来表示最小匹配。
单词边界:
特殊符号\b 匹配单词边界,就是位于单词字符(\w)
和非单词字符(\W)之间的零宽度的地方(字符串的开始和结尾被认为是非单词字符).例如:
反向引用:
我们曾经提到过用小括号来为量词包围一些字符,同样,也可以使用小括号来记住匹配到的东西。正则表达式中的一对小括号使得这部分匹配到的定西将被记住,以供以后使用。
[root@master Webqq]# cat t9.pl
while (@ARGV){
print "\@ARGV is @ARGV\n";
shift @ARGV;
};
[root@master Webqq]# perl t9.pl 1 2 3 4 5
@ARGV is 1 2 3 4 5
@ARGV is 2 3 4 5
@ARGV is 3 4 5
@ARGV is 4 5
@ARGV is 5
\b 匹配单词边界,就是位于单词字符(\w)和非单词字符(\W)之间的零宽度的地方。
(字符串的开始和结尾也被认为是非单词字符)
例如: /\bFred\b/ 将会匹配"The Great Fred"和"Fred the Great"中的Fred,但不能匹配"Frederick the Great",因为在"Fredrick"中的"d"后面没有跟着非单词字符