Perl—— 文件读写

前端之家收集整理的这篇文章主要介绍了Perl—— 文件读写前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一 读取一行

读取一行的方式有两种,分别为:    (1) 使用方法 readline(FILEHANDLE) ; (2) 使用符号<>

# my 申明为局部变量,作用域
my $filename = "a.txt";
my $encoding = "";
my $handle = undef;

#打开
open($handle,"<",$filename) || die "$0 : can't open $filename for reading:$!";

#read a line,读取时包含该行的\n符号也会读取 方式一
$line = <$handle>;

#去除行的\n
chomp($line);
print $line;

#read a line 方式二
$line = readline($handle);
print $line;

#关闭
close($handle);

二 读取所有行到列表中

使用 @array = <FILEHANDLE>

my $filename = "a.txt";
my $encoding = "";
my $handle = undef;

open($handle,$filename) || die "$0 : can't open $filename for reading:$!";

#read a line
$line = <$handle>;
print $line;

#把剩余的行都读取到一个list里面
@arr = <xxFile>;
#遍历@arr
foreach $a (@arr) {
	print $a;
}

close($handle);

三 写入一行

使用 print FILEHANDLE LIST

#写文件
$xxfilename = "xx.txt";
# 写入模式 >表示覆盖之前的文件,>>表示追加在文件的尾部
open (xxFile,">>",$xxfilename) or die "could not open $xxfilename : $!";
print xxFile ("aaaaaaaaaaabbdd\n");#注意圆括号前有空格,若没有则会出错提示为undefined subroutine &main::xxFile
close(xxFile);

四 复制文件,一行对一行

#把一个文件内容复制到另外一个文件中

$srcFilename = "xx.txt";
$destFilename = "out.txt";

open(srcFile,$srcFilename) or die "file could not open $srcFilename : $!";
open(destFile,">",$destFilename) or die "file could not open $destFilename : $!";
#循环写入,读取一行,写入一行
while($line = <srcFile>) {
	print destFile ($line);
}
close(srcFile);
close(destFile);

五 复制文件,读取任意字节数

读取:read FILEHANDLE,SCALAR,LENGTH

写入:syswrite FILEHANDLE,SCALAR

my $buffer = undef;
my $BUFSIZE = 4 * (2 ** 10);
my $srcFilename = "a.txt";
my $srcHandle = undef;

my $destFilename = "a_dest.txt";
my $destHandle = undef;

open($srcHandle,$srcFilename) || die "$0 can't open $srcFilename : $!";
open($destHandle,$destFilename) || die "$0 can't open $destFilename : $!";

while(read($srcHandle,$buffer,$BUFSIZE)) {
	unless(syswrite $destHandle,$buffer){ #当写入出错时会执行unless里的语句,与if语句相反
		die "can't write to $destFilename : $!";
	}
}

#关闭文件
close($srcHandle) || die "can't close $srcFilename : $!";
close($destHandle) || die "can't close $destFilename : $!";

六 复制二进制文件

对二进制文件(如图片)进行操作时,与普通文件不一样,需要对文件引用对进行处理,使用 binmode FILEHANDLE

#操作二进制文件
my $buffer = undef;
my $BUFSIZE = 4 * (2 ** 10);
my $srcFilename = "bg1.png";
#my $encoding = ":encoding(UTF-16LE)";
my $srcHandle = undef;

my $destFilename = "bg1_dest.png";
my $destHandle = undef;

#打开二进制文件
open($srcHandle,$destFilename) || die "$0 can't open $destFilename : $!";


##二进制处理##
for my $handle($srcHandle,$destHandle) {
	binmode($handle) || die "binmode Failed";
}

while(read($srcHandle,$buffer){ #当写入出错时会执行unless里的语句,与if语句相反
		die "can't write to $destFilename : $!";
	}
}


#关闭文件
close($srcHandle) || die "can't close $srcFilename : $!";
close($destHandle) || die "can't close $destFilename : $!";

猜你在找的Perl相关文章