use MIME::Base64 qw( decode_base64 );
# ...
print "Content-type: image/gif\n\n";
binmode STDOUT;
print decode_base64('R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');
####
>perl -MMIME::Base64 -e 'print decode_base64("R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==")' > pixel.gif
>perl -MMIME::Base64 -e 'print unpack("H*",decode_base64("R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="))'
47494638396101000100800000ffffff00000021f90401000000002c00000000010001000002024401003b
>perl -e 'print pack("H*","47494638396101000100800000ffffff00000021f90401000000002c00000000010001000002024401003b")' > pixel2.gif
>md5sum pixel.gif pixel2.gif
325472601571f31e1bf00674c368d335 pixel.gif
325472601571f31e1bf00674c368d335 pixel2.gif
>
##
##
print "Content-type: image/gif\n\n";
binmode STDOUT;
print pack('H*','47494638396101000100800000ffffff00000021f90401000000002c00000000010001000002024401003b');
##
##
>perl -MMIME::Base64 -MData::Dumper -e '$x=decode_base64("R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="); $Data::Dumper::Useqq=1; print Dumper($x);'
$VAR1 = "GIF89a\1\0\1\0\200\0\0\377\377\377\0\0\0!\371\4\1\0\0\0\0,\0\0\0\0\1\0\1\0\0\2\2D\1\0;";
>
##
##
print "Content-type: image/gif\n\n";
binmode STDOUT;
print "GIF89a\1\0\1\0\200\0\0\377\377\377\0\0\0!\371\4\1\0\0\0\0,\0\0\0\0\1\0\1\0\0\2\2D\1\0;";
##
##
print "Content-type: image/gif\n\nGIF89a\1\0\1\0\200\0\0\377\377\377\0\0\0!\371\4\1\0\0\0\0,\0\0\0\0\1\0\1\0\0\2\2D\1\0;";