如果我想尝试使用变量前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";
}
答案 0 :(得分:4)
不,不是因为unpack会创建一个0和1的字符串(最多1000个),这肯定会通过ascii测试(我相信tr, -~,,c / length
是
我建议只使用substr ($var, 0, 1000)
。
此外,\r
和\n
可能会出现在tr//
中。