>>910
printf も print と同じく文字列として書き込みが行われてしまいます。
例えば以下のようなプログラムを実行したときファイルに書き込まれるのは、
0x20 という1byteのバイナリデータではなく、20という2byteの文字列です。

open (OUT, "> test");
$a = 20;
printf OUT $a;
close (OUT);