您的位置:首页 > 其它

Perl学习笔记-2

2008-12-02 00:38 225 查看
[align=center]Perl学习笔记<2>

[/align]
|*********************************|
|************* 文件 **************|
|*********************************|
用open打开文件时,同时记得关闭句柄,否则会报以下警告:
Name "main::MYFILE" used only once:
例如:
open(MYFILE,"C://test.txt") || die("Can/'t open file:$!"); //此处有个疑问,期待高手帮忙解决:打开当前目录,也需要输入完

整路径,否则也报警告;
close MYFILE;
die中的$!将更详细的提示出错的信息,建议使用;

声明变量时,最好加上my,大部分的时候会报以下错误(警告):
Global symbol "$a" requires explicit package name at .... //$a为你所使用的变量名;

open(MYFILE,"C://test.txt") || die("Can/'t open file:$!");
open(MYFILE,“>C://test.txt") or die("Can/'t open file:$!"); //写入文件;
open(MYFILE,“>>C://test.txt") or die("Can/'t open file:$!"); //追加到文件尾;
print MYFILE "hello"; //将hello写入到对应的句柄中;

部分文件测试运算符
运算符 举 例 结果
- r - r‘file’ 如果可以读取‘f i l e’,则返回真
- w -w $a 如果$ a中包含的文件名是可以写入的文件名,则返回真
- e - e‘myfile’ 如果‘myfile’存在,则返回真
- z - z‘data’ 如果‘d a t a’存在,但是它是空的,则返回真
- s - s‘data’ 如果‘d a t a’存在,则返回‘d a t a’的大小,以字节为计量单位
- f - f‘novel.txt’ 如果‘n o v e l . t x t’是个普通文件,则返回真
- d - d‘/tmp’ 如果‘/ t m p’是个目录,则返回真
- T - T‘unknown’ 如果‘u n k n o w n’显示为一个文本文件,则返回真
- B - B‘unknown’ 如果‘u n k n o w n’显示为一个二进制文件,则返回真
- M - M‘foo’ 返回程序启动运行以来‘f o o’文件被修改后经过的时间(以天数计算)

#--测试机哦未通过
对以上运算符程序举例如下:
=head;
print "Save data to what file?";
my $myfile = <STDIN>;
chomp $myfile;
if( -s $myfile ){
warn "$myfile contents will be overwritten!/n";
warn "$myfile was last updated";
-M $myfile."das ago./n";
}
=cut;

|**************************************|
|************* 模式匹配 **************|
|**************************************|

1> .号(点)
匹配除了换行符之外的任何一个字符。
/x.y/ 可以匹配的字符:xzy, bxcy,x_y,x&y等,但是不匹配 xzzy,bxzzy,x_&y等字符;

2> +号(加号)
使前面的字符与后面的字符至少匹配一次,也可以任意地进行匹配。例如:
/do+g/将能够与下面的字符串匹配:hounddog,hotdog,doogiehowser,doooooogdoog;
但是不能与下面的字符串匹配:badge(因为没有o),doofus(因为没有g),Doogie(因为D与d不同),pagoda(因为d、o和g的顺

序不对);

3> *号(星号)
使前面的字符匹配0次或者任意次。例如:
/car*t/将能够与下面的字符匹配:carted,cat,carrrt;
但是不能与下面的字符匹配:carrot(多了一个字符o),carl(模式中的t不是可有可无的),caart(多出来的a不能匹配);

4> ?号(问号)
元字符?与*之间的区别是:模式/c?ola/可以匹配cola和ola,但是不能与ccola匹配。多出来的c需要进行两次匹配。模式/c*ola/可以

匹配cola、ola和ccola,因为c可以根据需要重复匹配任意次,而不只是0次或一次。

5> pat{n,m}
/x{5,10}/ x至少出现5次,但是不超过1 0次。
/x{9,} / x至少出现9次,也可能出现更多次。
/x{0,4}/ x最多出现4次,也可能根本不出现。
/x{8} / x必须正好出现8次,不能多,也不能少

6> 字符匹配
[abcde] 用于匹配a、b、c、d或e中的任何
[a-e] 与上面相同。用于匹配a、b、c、
G 用于匹配大写字母G或小写字母g
[0-9] 用于匹配一个数字
[0-9]+ 用于顺序匹配一个或多个数字
[A-Za-z]{5} 用于匹配任何一组5个字母字符
[*!@#$%&()] 用于匹配这些符号中的任何一个

7> ^号(暂称为异或符号)
如果插入记号(^)作为字符类中的第一个字符,该字符类将变为无效。

8> 常用字符类的快捷方式
/w 一个单词字符,与[a-zA-z0-9_]相同
/W 一个非单词字符(与/w相反)
/d 一个数字,与[0-9]相同
/D 一个非数字
/s 一个白空间字符,与[/t/f/r/n]相同
/S 一个非白空间字符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: