原创 perl 学习日志

2009-12-7 16:09 2332 4 4 分类: 工程师职场

1,数字表示4_294_296 带有下划线而不是逗号的大数字,当使用数字值的时候,P e r l会删除这些下划线。


2,给字符串加双引号和单引号的主要差别是:使用单引号的字符串含义是非常直观的,单
引号字符串中的每个字符就是表示它自己的含义。在双引号中的字符串中, P e r l要查看是否存
在变量名或转义序列


3,为了防止变量查找的字符串被内插替换,可以使用单引号(它不进行
任何形式的内插替换),也可以在变量标识符的前面加上一个反斜杠:


4,总的来说, Perl允许你对数字和字符串进行互换使用。它使用的表示法取决于在这种情况
下P e r l查找的是什么。


5,为你提供这种控制能力的最简单的语句是last。last语句能够使当前正在运行的最里面的
循环块退出。请看下面这个例子:


6,n e x t语句使得控制权被重新传递给循环的顶部,同时下一个循环的重复运行则开始进行,
如果该循环尚未结束的话:


7,若要将一个列表存放在一个变量中,需要一个数组变量。列表在等式的右边,数组在等式的左边。



8,P e r l有一个非常有用的能够对列表进行操作的运算符,称为范围运算符。范围运算符由一
对圆点(..)


9,P e r l提供了两个机制,可以用来查找数组的结尾。第一个方法
是个特殊变量,其形式是$ # a r r a y n a m e。它能够返回数组的最后一个有效索引的号码。


10,P e r l还有另一个循环语
句,称为f o r e a c h语句,我们在第3学时没有介绍。f o r e a c h语句设置一个索引变量,称为迭代器,
它相当于列表的每个元素


11,。将标量转换成数组的方法之一是使用s p l i t函数。S p l i t函数
拥有一个模式和一个标量,并且使用该模式来分割该标量。第一个参数是该模式(这里用斜
杠括起来),第二个参数是要分割的标量:


12,若要用数组来创建一个标量,也就是进行s p l i t的反向操作,可以使用P e r l的j o i n函数。j o i n
函数取出一个字符串和一个列表,使用该字符串将列表的各个元素组合在一起,然后返回产
生的字符串。


13,P e r l是一种能够进行文件输入和输出(文件I / O)的非常出色的语言。P e r l的标量能够延伸,
以便将尽可能长的记录存放在文件中,另外,P e r l的数组能够扩展,以便存放文件的全部内容,
当然这必须是在内存允许的情况下才能做到。


14,每当需要访问磁盘上的文件时,必须创建一个新的文件句柄,并且打开该文件句柄,进
行相应的准备。当然必须使用o p e n函数来打开文件句柄。O p e n的句法如下:
open (filehandle, pathname)


15,这个“打开或失败”语句是使用d i e函数来编写的。d i e函数用于停止
P e r l程序的执行,并且输出下面这个出错消息:


16,匹配符,+ . ? *  .* 


17,= ~运算符并不进行赋值,它只是取出右边的运算符,并使它对左边的变量进行操作。整
个表达式拥有的值与使用$ _时所拥有的值是相同的


18,这个例子看上去不仅很笨,而且很容易出错,因为很容易在键入大写和小写字母对时发
生错误。替换运算符(s / / /)和匹配运算符(m / /)能够在匹配正则表达式时不考虑大小写字母,
如果匹配项的后面跟一个字母i的话。
/ m a c b e t h / i ;


19,P e r l中的一个常见操作是搜索数组,寻找某些模式。例如,如果将一个文件读入一个数组,
然后你想要知道哪一行包含某个单词。P e r l有一个特殊的函数,可以用来进行这项操作,这个
函数称为g r e p。g r e p函数的句法如下



20,哈希是按照名字来访问它们的标量的


21,并且现在你的函数也
可以拥有参数。若要传递子例程的参数,可以使用下面任何一个语句:


 subname(arg1,arg2,arg3)
 
 22,若要运行非P e r l的命令,最简单的方法是使用s y s t e m ( )函数。s y s t e m ( )函数能够暂停P e r l程
序的运行,然后运行外部命令


23,在perl中没有指针的概念,类似的有引用的概念。


 


24,“fred”x 3 # “fredfredfred”



25,@array = 5..9;
$fred = pop(@array); #$fred 得到9,@array 现在为(5,6,7,8)
$barney = pop @array; #$barney gets 8, @array 现在为(5,6,7)
pop @array; #@array 现在为(5,6)(7 被丢弃了)
push 的第一个参数或者pop 的唯一参数必须是数组变量。


26,push 和pop 对数组的末尾进行操作(或者说数组右边有最大下标的元素,这依赖于你是怎样思考的)。相应的,unshift 和
shift 对一个数组的开头进行操作(数组的左端有最小下标的元素)


27,sort 操作将输入的一串列表(可能是数组)根据内部的字符顺序进行排序。


28,删除文件用unlink


29,◆如果你想改变其中的一部分,但不是全部,那可以将此部分用[\d\D]代替
$_ = “I saw Barney\ndown at the bowing alley\nwith Fred\nlast night.\n”;
if(/Barney.*Fred/s){
print “That string mentions Fred after Barney!\n”;
}
如果不使用/s,那么上述模式将不能被匹配上,因为这两个字符不在同一行中。



30,/x 修饰符,允许你在模式中加入任何数量的空白,以方便阅读:
/-?\d+\.?\d*/ #这是什么含义?
/ -? \d+ \.? \d* /x #要好些


31,检测一个文件是否存在。


32,$file = './count.v';



open (MYdir,"$file");


die "a232323" if -M MYdir >1;  检测文件超过多少天没有修改了。


 


33,若要创建哈希元素,只需要将值赋予这些元素即可,这与创建数组的元素很相似。例如,
可以使用类似下面的代码来创建各个哈希元素:


$Authors{$join} = 'frank herbert';


在这个例子中,将% A u t h o r s赋予哈希结构。该元素的关键字是单词D u n e,数据是名字
Frank Herbert.


$student{'junying'} = 88;
$student{'zhang'}  = 99;


print $student{'junying'};



为什么这个例子使用的是$ A u t h o r s { },而不是% A u t h o r s { }呢?与数组一样,当哈希结构
作为一个整体来展示时,它们的变量名的前面有它自己的标记( %)。当你访问哈希结构的单
个元素,即一个标量值时,要在变量名的前面加上一个美元符号( $),表示它引用的是单个
值,同时使用花括号来指明该值


%student = ('junying',88,'zhang',99);


%student = ('junying' => 88,'zhang' => 99);



可以使用k e y s函数来检索作为列表返回的哈希结构的所有关键字,然后可以查看该列表,
找出哈希结构的所有元素


P e r l还提供了另一个函数v a l u e s,用于检索哈希结构中存放的所有值。如果仅仅检索值,
通常是没有什么用处的,因为你不知道哪个关键字与哪个值相关联。返回的哈希结构的值的
顺序与k e y s函数返回的关键字的顺序是相同的。现在请观察下面这个例子:


请注意,现在所有的关键字值对的顺序都倒了过来(值放在了前面)。当你将这个列表赋
予% B y D i r e c t o r时,产生的哈希结构将与原始哈希结构相同,只不过现在所有的关键字变成了
值,而所有的值则变成了关键字。不过你应该知道,如果由于某个原因你的哈希结构拥有相
重复的值,如果该值(将要变成关键字)不是唯一的,那么你得到的哈希结构拥有的元素将
比原先要少。由于在新的哈希结构中,重复的值会发生冲突,因此老的关键字将被新的关键
字代替。



关的数据。那么正确的方法应该是什么呢? P e r l有一个专门用于这个目
的的函数,称为e x i s t s。下面显示的e x i s t s函数可以用于测试哈希结构中是否存在哈希关键字,
如果存在,便返回真,否则返回假:


若要删除单个哈希关键字,可以使用d e l e t e函数,如下所示:
delete $student{'junying'};



$str = "abbbbbbc";


if($str =~ m/b{7}/)   // 匹配固定个数的相同字符
{
 print "There are six bs\n";
 }
else
{
 print "error\n";
 
 }

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条