2009年6月25日星期四

Perl Cookbook : Chapter 7 - Chapter 10

表7-1 文件存取权限

使用sysopen进行 low-level 控制

sysopen(FH, $path, O_WRONLY|O_APPEND|O_CREAT, 0600) or die $!;

IO::File,Fcntl,Symbol,IO::Tee,IO::Handle

FileCache 缓存

File::Temp 临时文件

Inline::Files 自定义虚拟文件句柄

seek,tell,truncate

open(F, "+<", $infile)      or die "can't read $infile: $!";
$out = "";
while (
) {
    s/DATE/localtime/eg;
    $out .= $_;
}
seek(F, 0, 0)               or die "can't seek to start of $infile: $!";
print F $out                or die "can't print to $infile: $!";
truncate(F, tell(F))        or die "can't truncate $infile: $!";
close(F)                    or die "can't close $infile: $!";

Fcntl,File::Lock,File::NFSLock

缓冲输出

use IO::Handle qw(autoflush);

IO::Select

open($fh, "<:raw:utf8", $filename);                  # read UTF-8 from the file
open($fh, "<:encoding(shiftjis)", $filename);        # shiftjis japanese encoding
open(FH,  "+<:crlf", $filename);                     # convert between CRLF and \n

binmode($fh, ":raw:utf8");
binmode($fh, ":raw:encoding(shiftjis)");
binmode(FH,  "<:raw:crlf");

binmode(HANDLE, ":raw");                     # binary-safe
binmode(HANDLE);                             # same as :raw
binmode(HANDLE, ":raw :utf8");               # read/write UTF-8
binmode(HANDLE, ":raw :encoding(shiftjis)"); # read/write shiftjis

sysread,syswrite,sysseek

Tie::File,File::stat,File::Tail,File::Compare,Text::Diff

IO::Seekable

表9-2 文件测试符

utime,lstat

rewinddir,seekdir,telldir

File::Copy,DirHandle,File::Find,File::Path,File::Basename

Stat::lsMode,File::chmod,Cwd,Error

eval例子:

eval { func( ) };
if ($@) {
    warn "func raised an exception: $@";
}

没有评论:

发表评论