Для того, чтобы отправить из cgi-скрипта письмо с прикреплённым к нему файлом, необходимо воспользоваться perl-модулем MIME::Lite.
Пример:
#!/usr/local/bin/perl
use MIME::Lite;
### Create a new multipart message:
$msg = MIME::Lite->new(
From =>'address1@peterlink.ru',
To =>'address2@peterlink.ru',
Cc =>'address3@peterlink.ru',
Subject =>'A message with 2 parts...',
Type =>'TEXT',
Data =>"Здесь текст письма"
);
### Attach a part:
$msg->attach(Type =>'image/gif',
Path =>'somedir/image.gif',
Filename =>'image.gif'
);
MIME::Lite->send("sendmail", "/usr/sbin/sendmail -t");
$msg->send();