Chinaunix首页 | 论坛 | 博客
  • 博客访问: 690957
  • 博文数量: 108
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 1436
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-31 09:49
文章分类
文章存档

2019年(16)

2015年(2)

2014年(20)

2013年(70)

我的朋友

分类: PERL

2014-02-10 11:32:28

? 如何打开和关闭文件。
? 如果将数据写入文件。
? 如何从文件中读取数据。
? 如何使你编写的P e r l程序具备保护功能,从而使其更加强大。

打开文件的格式咧,是这个样子的。
open    (filehandle, pathname)
也是拥有句柄的奥,如果你愿意这么叫的话。不过我习惯直接理解作用,然后找到方便自己记忆的方法啦
上面的open是一个函数了啦。
die函数用于停止Perl程序的执行,会输出错误的脚本名称以及发生的行数。
die和open呢是可以常常一起出现的。样子大概是下面的这个样子。
open (MYTEXT,"novel.txt)  | |  die;
上面的一行的可以读作“打开或撤销”,

路径名:
可以打开绝对路径神马的,要注意正反斜杠的用法,还有小心因为斜杠被转义了奥~~~

出色的防错措施:
自己多多注意吧,少年。。。

以适当的方式运行die函数。哦吼吼。
P e r l中有一个特殊的变量$ !,它总是设置为系统需要的最后一个操作(比如磁盘输入或输
出)的出错消息。当 $ !用于数字上下文时,它返回一个错误号,这个号可能对任何人都没有
什么用处。在字符串上下文中,$ !返回来自你的操作系统的相应的出错消息:

如果由于文件不存在,上面这个代码段中的代码运行失败,那么输出的消息将类似 c a n n o t
open myfile : a file or directory in the path does not exist,

不要使用$ !的值来检查系统函数的运行是失败还是成功。只有当系统执
行一项操作(比如文件输入或输出)之后, $ !才有意义,并且只有在该操作
运行失败后,$ !才被设置。在其他时间中, $ !的值几乎可以是任何东西,并
且是毫无意义的。
如果不想直接停掉程序的话,只返回一个可爱的小警告的话,可以使用  “warn”函数来进行警告。
使用的方法和“die”函数的使用方法是一样的。



读取文件奥~~~~~~~
可以使用两种不同的方法读取 P e r l的文件句柄。最常用的方法是使用文件输入运算符,也
叫做尖括号运算符(< >)。若要读取文件句柄,只需要将文件句柄放入尖括号运算符中,并将
该值赋予一个变量:
#!/usr/bin/perl
open(MYFILE,"myfile") || die "bu neng dakai ao :$!";
$line=;
[root@shangxiantongbu script]# ./duqu1.pl
bu neng dakai ao :该目录找不到指定文件 at ./duqu1.pl line 2.
标量变量中的尖括号运算符能够读取来自文件的一行输入。当该文件被读完时,尖括号
返回值u n d e f。
[root@shangxiantongbu script]# cat duqu2.pl
#!/usr/bin/perl
open(MYFILE,"myfile") || die "bu neng dakai ao :$!";
while(defined($a=)) {
    print $a};



如何输出所有的行咧,是通过while循环来实现的呢。
[root@shangxiantongbu script]# cat duqu2.pl
#!/usr/bin/perl
open(MYFILE,"myfile") || die "bu neng dakai ao :$!";
while(defined($a=)) {
    print $a};
[root@shangxiantongbu script]# ./duqu2.pl
dfjngdjfngjdfngjdnfjdfl
dflngdjfngldjfg
dflgnldfnkgldf
gdflgnldfjngldfg
dfgldfjngldfg
dfgldfngj


在列表上下文中,尖括号运算符能够读取整个文件,并将它赋予该列表。文件的每一行
被赋予列表或数组的每个元素,如下所示:








写入文件:
[root@shangxiantongbu script]# cat duxie2.pl
#!/usr/bin/perl
open(LOGF,">>logfile") || die "#!";
if (! print LOGF "sdfsdfsdgsdfsdfwefewfsdfsdf", scalar(localtime), "\n") {
        warn "buneng sfosdgsdnfsdf :$!";
}
close(LOGF);
[root@shangxiantongbu script]# ./duxie2.pl
[root@shangxiantongbu script]# cat logfile
sdfsdfsdgsdfsdfwefewfsdfsdfMon Feb 10 09:38:43 2014
sdfsdfsdgsdfsdfwefewfsdfsdfMon Feb 10 09:39:05 2014
sdfsdfsdgsdfsdfwefewfsdfsdfMon Feb 10 10:52:33 2014

打开句柄,进行写入,写入完成后关闭句柄~~~

[root@shangxiantongbu script]# cat xieru.pl
#!/usr/bin/perl
open(SOURCE,"xierusource") || die "$!";
open(DEST,">xierudest") || die "$!";
@contents=;
print DEST @contents;
close(DEST);
close(SOURCE);
这个起到了一个简单的复制作用。

自由文件、测试文件和二进制数据
文件和文件系统不一定只包含你写入文件的数据。有时文件句柄代表的不仅仅是个简单
文件。例如,文件句柄可以被附加给键盘设备、网络套接字和大容量存储设备,如磁带驱动
器。
另外,文件系统也可以包含所谓的关于你的文件的元数据。 P e r l可以用来查询文件系统,
以便确定你的文件究竟有多大,上次修改文件的时间,谁修改了这个文件,以及文件中究竟
有些什么信息等。在有些操作系统中,文件的元数据甚至能够确定文件是作为文本文件还是
二进制文件来处理。

自由文件句柄:



阅读(1660) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~