На сервере: debian stable 6 + ngnix + perl + fastcgi:
use CGI::Fast;
#...
while(my $cgi = CGI::Fast->new()) {
#...
	if(!defined($cgi->param('file'))){
		print <<"T";
<html>
<head>
<body>
<form method="post" action="/x/" enctype="multipart/form-data">
<input type="file" name="file"><br>
<input type="submit" name="button" value="Ok">
</form>
</body>
</html>
T
	}
	else{
		my $name = $cgi->param('file');
		my $fh = $cgi->upload('file');
		my $size = 0;
		my $buffer;
 		open(my $f, ">$DIRNAME/$name") or $!;
		while (my $c = read($fh,$buffer,16384)) {
			$size += $c;
			print $f $buffer;
		}
		close($f);
		print <<"T";
<html>
<head>
<body>
OK. FileName: $name, FileSize: $size
</body>
</html>
T
#...
}
Файл на сервер загружается, но почему-то физически на диске большего размера, чем лежит в переменной $size по результатом загрузки и изначальный файл.
Я заметил, что это происходит с бинарным файлом, с текстовым нет, хотя для linux на сколько я знаю разницы нет. Как исправить? Что не верно в коде?


