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 一个非白空间字符
[/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 一个非白空间字符
相关文章推荐
- perl学习笔记 (转载)
- Perl学习笔记 Learning Perl Chapter I
- Perl学习笔记 Learning Perl Chapter II
- Perl 学习笔记 --- 13
- Learning Perl(Perl语言入门)学习笔记(1)
- Learning Perl(Perl语言入门)学习笔记(3)
- perl学习笔记四----流程控制
- Perl学习笔记(3)----遍历哈希表的一个容易疏忽的地方
- Perl 学习笔记(6)
- Perl 学习笔记-输入输出
- perl学习笔记-----------------------(12)
- Perl学习笔记 No.1
- Perl学习笔记 No.10
- Perl学习笔记 — Find Rare Item[解答篇]
- Perl语言学习笔记2
- Perl语言学习笔记 6 哈希
- Perl学习进度笔记(二)
- Perl 学习笔记 --- 09
- Perl学习笔记(2)默认变量,子函数,
- perl学习笔记八----格式化输出