变量的前1000个字节

时间:2012-10-05 10:13:34

标签: perl text binary-data unpack

如果我想尝试使用变量前1000个字节的这个猜测子程序,这个unpack的用法是否正确?

#!/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";
}

1 个答案:

答案 0 :(得分:4)

不,不是因为unpack会创建一个0和1的字符串(最多1000个),这肯定会通过ascii测试(我相信tr, -~,,c / length

我建议只使用substr ($var, 0, 1000)

此外,\r\n可能会出现在tr//中。