如何使用Perl从二进制文件中获取最后16个字节?

时间:2016-07-27 06:31:46

标签: perl

我用Perl读取了一个图像:

open (FILE,"<$filename") or die $!;
            binmode FILE;
            while (($n = read FILE, $data, 4) != 0) {
                $buf .= $data;
            }
close (FILE);

如何才能从此文件中获取最后16个字节? Backgound是,我想比较一个图像的最后16个字节和另一个图像的最后16个字节。

1 个答案:

答案 0 :(得分:5)

使用seek移动到文件结束前的16个字节,然后读取16个字节:

open (FILE, "<$filename") or die $!;
binmode FILE;
seek FILE, -16, 2;
read FILE, $data, 16;
close (FILE);

您也可以使用常量而不是2

use Fcntl qw(SEEK_END);

open (FILE, "<$filename") or die $!;
binmode FILE;
seek FILE, -16, SEEK_END;
read FILE, $data, 16;
close (FILE);