ディスクまたはディスクイメージが「空」であるかどうかを確認しようとしています。最初の1MBと最後の1MBがゼロであれば、これは真であると仮定します。私はhexdump
を作り直そうとし始めましたが、この時点で少し納得したようです。ここでネイティブperl 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++;
}
}
}
はこれを行うには良い方法はありますか?
多くの場合、あなたが文字のリストを生成するために、 '分割//'を実行している自分自身を見つけるとき、小さな小さなにアップし、あなたの文字列をチョッピングに頼ることなく、Perlでこれを行うには、いくつかのより良い方法があります。 @mobによって与えられる正規表現のアプローチは、あなたが使っているスライス・アンド・ダイスの方法よりも2倍の速さになります。 – tchrist
確かに、アルゴリズム全体を書き直すのではなく、ステップを修正しようと考えていたのです。 – zigdon