The bug may disappear if you install Readonly::XS ... not sure - just a thought.
Readonly::XS provides about the simplest way there is of making scalars readonly. (Note that you don't explicitly "use Readonly::XS;". You just install it and Readonly will automatically use it for making scalars readonly.)
use warnings;
use strict;
use Readonly;
use Readonly::XS;
Readonly my $DBG_INFO => 0x0004;
Readonly my $DBG_KEYS => 0x0008;
Readonly my $DBG_RAND => 0x0080;
Readonly my $_debug_ops => ($DBG_RAND | $DBG_KEYS | $DBG_INFO);
printf ("%04x\n", $_debug_ops);
printf ("%04x\n", $DBG_RAND | $DBG_KEYS | $DBG_INFO);
__END__
$ perl -wl 640089.pl
Argument "=28" isn't numeric in printf at 640089.pl line 12.
0000
008c
Readonly is up to date (1.03).
Readonly::XS is up to date (1.04).
perl, v5.8.5
linux 2.6.9