Thanks for the wisdom.
Yes Slickedit was converting tab to spaces.
In my real script which was a bit more complicated (creating wav files) than this example I was also using a printf of data containing %f which was interpreted as 302E303030303030 hex or 0.000000
which confused me. ie
my @tmp = ( 0x25, 0x66 );
my $output = pack( 'C*',@tmp );
#print FILE $output;
printf( FILE "$output" );