Генерирую изображение в PERL. Почему оно искажается? Можно ли как-то исправить?

Код:


#!/usr/bin/perl -w
use CGI;

$cgi = new CGI;

$file = $ENV{'DOCUMENT_ROOT'}."/m.jpg";

unless (-e $file)
{
print $cgi->header();
print "NE";
exit;
}

open(IMAGE, $file);
$size = -s $file;
read IMAGE, $data, $size;
close(IMAGE);

print $cgi->header(-type => 'image/jpg');

print $data;


Появляется сильно искаженное изображение... Где ошибка?
Регистрируйтесь, делитесь ссылками в соцсетях, получайте на WMR кошелек 20% с каждого денежного зачисления пользователей, пришедших на проект по Вашей ссылке. Подробнее
ОТВЕТЫ
Знаток (425)
PERL - язык для работы с текстами. Поэтому он отдает файлы в ASCII режиме (по умолчанию), а не в BINARY, как следовало бы отдавать изображения. Поэтому, после открытия файла, надо перевести его в бинарный режим:


binmode IMAGE;