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

如何使用Perl从二进制文件中获取最后16个字节?,perl,Perl,我使用Perl read读取图像: open (FILE,"<$filename") or die $!; binmode FILE; while (($n = read FILE, $data, 4) != 0) { $buf .= $data; } close (FILE); open(FILE),用于移动到文件结束前16个字节的位置,然后读取16个字节: open (FILE,

我使用Perl read读取图像:

open (FILE,"<$filename") or die $!;
            binmode FILE;
            while (($n = read FILE, $data, 4) != 0) {
                $buf .= $data;
            }
close (FILE);
open(FILE),用于移动到文件结束前16个字节的位置,然后读取16个字节:

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

如果您有perl v5.6.0或更高版本,您应该使用词法文件句柄(当它们超出范围时自动关闭)和3-arg
open
(当使用2-arg
open
打开时,恶意命名的文件可以执行任意程序),例如:
打开我的$file,'谢谢您的建议!
use Fcntl qw(SEEK_END);

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