perl读取整个文件后,再写入带新的文件下,为什么大小发生改变了,如何才能不让其发生改变?

2025-04-25 17:26:14
推荐回答(1个)
回答1:

你所描述的问题是正常的,因为你的写出文件句柄没有关闭,因此统计值是其打开THIRD这个句柄时,文件的大小。因此需要先关闭写出文件句柄再打开。
建议你后面一段代码修改为如下:

另外,你的第一段代码中open (THIRD,">>C:\\2.zip");
尽量修改为open (THIRD,">C:\\2.zip");
否则是追加,而不是重写。因此如果C:\\2.zip文件已经存在,那么你再追加就可能存在问题。

所以修改后的代码应该如下:

#!/usr/bin/perl -w
my $opened = open (FIRST,"my $content;
$content = do { local $/; ; };
my @args = stat (FIRST);
print "$args[7]/n";
close(FIRST);
open (THIRD,">C:\\2.zip");

binmode(THIRD);
print THIRD $content;
close(THIRD);
open (THIRD,">>C:\\2.zip");
my @argst = stat (THIRD);
print "$argst[7]";
close(THIRD);