1

unpack変数の最初の 1000 バイトでこの推測サブルーチンを試したい場合、この使用法は正しいですか?

#!/usr/bin/env perl
use warnings;
use 5.10.1;

my $var = ...;
my $part = unpack( 'b1000', $var ) ;

sub is_binary_data {
    local $_ = shift;
    (   tr/ -~//c / length  ) >= .3;
}

if ( is_binary_data( $part ) ) {
    say "Binary";
}
else {
    say "Text";
}
4

1 に答える 1

4

unpack は0と1の文字列(最大1000個)を作成し、ASCIIテストに確実に合格するため、そうではありません(そうであると私は信じていtr, -~,,c / lengthます)

代わりに使用することをお勧めしsubstr ($var, 0, 1000)ます。

また、おそらく\rと に\n表示されるはずtr//です。

于 2012-10-05T11:27:25.423 に答える