... use CGI qw(header path_info); my $file = getNoImage($SHOP); print header(-Content_type => 'image/gif', -Content_length => length $file), $file; ... sub getNoImage { my $SHOP = shift || croak ("ProcessAction : Missing Shop data"); my ($chunk, $image); open IMAGEFILE, "$SHOP->{-TEMPLATE_PATH}/img/MyFile.gif" or die "Cannot open file: $!\n"; binmode IMAGEFILE; while ( read(IMAGEFILE, $chunk, 1024) ) { $image .= $chunk; } close IMAGEFILE; return $image; }