On Sep 9, Dan Muey said:

>> if -T $data ....
>> if -B $data ....
>
>I never thought of using the file test operators on variables!

I'm not so sure you can.  But the docs say that -B looks for at least 30%
of the characters to be control-chars or high-bit chars.  So I'd suggest:

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

The tr/ -~//c takes the range of characters from space to tilde (32-126),
inverts it (so characters 0-31 and 127-255), and counts how many of them
are in $_.  Then we divide that by the length of the string.  If that's at
least .3, that means at least 30% of the string is binary data.

-- 
Jeff "japhy" Pinyan      [EMAIL PROTECTED]      http://www.pobox.com/~japhy/
RPI Acacia brother #734   http://www.perlmonks.org/   http://www.cpan.org/
<stu> what does y/// stand for?  <tenderpuss> why, yansliterate of course.
[  I'm looking for programming work.  If you like my work, let me know.  ]


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to