Perl学习笔记-2

Perl学习笔记<2>


|*********************************|
|************* 文件 **************|
|*********************************|
用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        一个非白空间字符

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章