Native perl hexdump - 只检查零值

kjp*_*ice 1 perl hexdump

我正在尝试检查磁盘或磁盘映像是否为"空".我假设如果第一个1mb和最后一个1mb是零则这是真的.我开始尝试重新创建,hexdump但此时似乎有点啰嗦.

这是我的代码:

open DISK, $disk or die $!;
for( 1 .. 1024 ) {
    $buffer = undef;
    sysread(DISK, $buffer, 1024, 0) or last;
    for ( split //, $buffer ) {
        if( ord($_) =~ /[^0]/ ) {
            $flag++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

mob*_*mob 6

直接检查字节字符串是否$buffer包含除\0字节以外的任何内容.

if ($buffer =~ /[^\0]/) {
    $flag++;
}
Run Code Online (Sandbox Code Playgroud)