perl学习笔记
来源:互联网 发布:ubuntu terminal 配色 编辑:程序博客网 时间:2024/05/24 03:12
1.在单引号里,\n不是换行,只是反斜线和字母n两个字符
2.2**3表示2的三次方
3.<STDIN>让perl程序读取从键盘输入的值
4.<STDIN>返回的字符串,一般都会在最后跟有一个换行符,用chomp能移除换行符,举例:
#!/usr/bin/perl
chomp($c=<STDIN>);
if($c eq "a"){
}
else{
}
如果不加chomp,当你输入"a"的时候输出"no data"
5.注意下面不是乘号,而是字母x,输出为"hellohello"
#!/usr/bin/perl
$c="hello"x2;
6.
c[0]=5,c[1]=6等等,pop可用来取出数组最一个元素,同时返回该元素值
下面输出$a=9,$b=8,@c为“5 6 7”
#!/usr/bin/perl
@c=5..9;
$a=pop(@c);
$b=pop(@c);
#!/usr/bin/perl -w
- use strict;
- print
'@a @b @c @d 的值都为12 3',"\n"; - my
@a =(1..3); - pop(@a);
- print
"\@a的值为@a,pop拿掉数组最右边的值\n"; - my
@b =(1..3); - push(@b,'4');
- print
"\@b的值为@b,push添加一个值到数组的最右边。\n"; - my
@c =(1..3); - shift@c;
- print
"\@c的值为@c,shift拿掉数组最左边的一个值。\n"; - my
@d =(1..3); - unshift(@d,0);
- print
"\@d的值为@d,unshift添加一个值到数组的最左边。\n"; -
-
- [root@OTRS
perl]# perlpop_push_shift_unshift.pl - @a
@b @c@d 的值都为12 3 - @a的值为1
2,pop拿掉数组最右边的值 - @b的值为1
2 34,push添加一个值到数组的最右边。 - @c的值为2
3,shift拿掉数组最左边的一个值。 - @d的值为0
1 23,unshift添加一个值到数组的最左边。
8.Foreach从列表(数组)的第一个元素一直循环执行到最后一个元素,一次迭代一个。控制变量(本例中为$rock)每一次迭代从列表中取出一个新值。第一次为“ bedrock” ,第三次为 “ lava”。控制变量不是这些列表元素中的一个拷贝而是这些元素本身。也就是说,如果在循环中修改这个变量,那原始列表中的元素也会被修改,如下面代码段所显示。这条性质是有用的,但是,如果不清楚,可能对其结果感到吃惊。
当循环结束时$rock 的值为多少呢?其值同循环开始之前相同。foreach 循环中控制变量的值会被 Perl自动保存和恢复。当循环进行时,是没有办法改变其值的。循环结束时,变量的值会回到循环开始前,如果没有值则为undef。这意味着如果有一个变量和控制变量有相同的名字:“ $rock” ,不用担心会混淆它们。
#!/usr/bin/perl
foreach $rock(qw/bedrock slate lava/){
print "One rock is $rock.\n";
}
$rock = "black rock";
@rocks=qw/bedrock slate lava/;
foreach$rock(@rocks){
$rock = "test $rock";
$rock .= "\n";
}
print "The rocks are:\n",@rocks;
print "The rock is: $rock\n";
One rock is bedrock.
One rock is slate.
One rock is lava.
The rocks are:
test bedrock
test slate
test lava
The rock is: black rock
9.reverse会读取数组并按相反的次序返回,会输出“109876”
@array=6..10;
@a2=reverse(@array);
$rock = "teset";
print @a2;
10.使用qw可以不用输入大量的引号,sort用来排序,输出apple first hit,$c=45
#!/usr/bin/perl
@a1=qw(first applehit);
@a2=sort @a1;
foreach(@a2){
print "$_\n";
}
$c=42+@a1;
print "$c\n";
11.匹配不分大小写
#!/usr/bin/perl
while(<>){
if(/fred/i){
print "match";
}
}
12.Perl中的一个非常有用的函数是split -把字符串进行分割并把分割后的结果放入数组中。这个函数使用规则表达式(RE),如果未特定则工作在$_变量上。
split函数可以这样使用:
$info = "Caine:Michael:Actor:14, Leafy Drive";
@personal = split(/:/, $info);
其结果是:
@personal = ("Caine", "Michael", "Actor", "14, Leafy Drive");
如果我们已经把信息存放在$_变量中,那么可以这样:
@personal = split(/:/);
如果各个域被任何数量的冒号分隔,可以用RE代码进行分割:
$_ = "Capes:Geoff::Shot putter:::Big Avenue";
@personal = split(/:+/);
其结果是
@personal = ("Capes", "Geoff", "Shot putter", "Big Avenue");
但是下面的代码:
$_ = "Capes:Geoff::Shot putter:::Big Avenue";
@personal = split(/:/);
的结果是
@personal = ("Capes", "Geoff", "", "Shot putter", "", "", "BigAvenue");
13.sub可创建子程序,让我们可以重复利用已有的代码,可以通过“&”来调用子程序,最后一次的运算结果都会被自动当成子程序的返回值(不同于VBS),第2个例子最后的表达式为print语句。它的返回值通常是1,代表“输出成功”,但它并不是我们想要的值。
example 1:
sub test {
}
$a = 3;
$b = 4;
$tmp1 = &test; #tmp为7
example 2:
sub test{
}
$a = 3;
$b = 4;
$tmp1 = &test; #tmp为1
14.my可以用来创建私有变量,state可以创建持久性私有变量(在子程序多次调用保留该变量的值)
sub max {
}
15.反向引用\1,反斜号后的数字和括号的组号匹配
$_ = "abba";
if (/(.)\1/){ #同'bb'匹配
}
通过使用\g{1}排除二义性
use 5.010;
$_ = "aa11bb";
if (/(.)\g{1}11/){ #同'aa11'匹配
}
16.默认模式匹配的对象是$_,=~能让perl拿右边的模式来匹配左边的字符串,而非匹配$_
my $t = "my rubble";
if($t=~/\brub/){ #\b匹配单词边界,还能匹配rubtest,但不能匹配arub
}
17.s///用来替换
$_= "he is go with Barneytonight!";
s/Barney/Fred/;
print "$_";
18.即使有其他可以替换的部分,s///也只会进行一次替换,用/g进行全局替换
$_ = "home,sweet home!";
s/home/cave/g;
print "$_"; #打印"cave,sweetcave!",若不加/g,则打印"cave,sweet home!"
19.
$x="4:6:8:10";
my @values = split /:/,$x; #得到4,6,8,10
my $z = join "-",@values; #得到4-6-8-10
print "$z";
20.在编写perl程序的时候,我们有时需要截取一个字符串中的部分内容,这个时候通常会使用Perlsubstr函数实现这个功能。
1.
2.
运行上面的程序,输出结果"testt",这个是我们想要的结果。再看看下面的程序:
1.
2.
这时候输出了一个"?",这显然不是我们想要的结果。因为在perl中,所有从外部输入的字符串(包括写在程序里的字符串)都会当成字节来处理,"printsubstr($str,0,1);"这句话只是把"测试文本"的第一个字节取出来,并且用print输出,然而单个字节是不能表示一个中文字符的,所以就输出了"?"。
如果想要上面的程序输出正确的结果,就需要使用decode函数把"测试文本"转换成perl内部字符串,让perl把"测试文本"当成字符串来处理,这样再用"substr($str,0,1);"截取的就不是一个字节,而是一个汉字。
◆下面看一下Perl substr函数的用法:
指令:substr
语法:substr($string,offset,length)
offset代表起始字符的位置,length代表引用的字符串长度,如果省略length则代表从起始值到字符串的最后一个字符长度。而offset如果是负值的话,就会从字符串右边开始指定字符。
示例:
1.
2.
3.
----------------------------------------
21.chdir 功能为改变当前工作目录(同cd),用法如下:
chdir("$Path/$day");
22.
- Perl学习笔记
- perl学习笔记
- perl 学习笔记
- perl语言学习笔记
- Perl学习笔记(1)
- Perl学习笔记(2)
- Perl学习笔记(3)
- Perl学习笔记(4)
- Perl学习笔记(5)
- Perl学习笔记-1
- Perl学习笔记-2
- Perl 学习笔记
- perl学习笔记
- perl学习笔记之
- perl子程序学习笔记
- [PERL脚本] 学习笔记
- Perl学习进度笔记
- perl学习笔记
- nagios中sendmail邮件报警设置
- putty使用教程
- java对cookie的操作
- nagios+pnp4nagios安装
- PHP JSON extension not avaliabl…
- perl学习笔记
- perl sort <=> and cmp
- perl中数组函数详解:join和split…
- 使用javascript动态管理css
- curl监控站点响应时间
- ksh学习笔记
- This system is not registered wi…
- linux终端命令精选
- Linux(ubuntu)赋予用户sudo权限