in reply to optimization of browser upload

Your question:

except for the 1024. What is its purpose?...

Following the principle of RTFM, I've typed this in my shell:
> perldoc -f read
And received this, which is exactly the answer you were seeking there:
read FILEHANDLE,SCALAR,LENGTH Attempts to read LENGTH bytes of data into variable SCALAR from the specified FILEHANDLE. Returns the number of bytes actually read, "0" at end of file, or undef if there was an error. SCALAR will be grown or shrunk to the length actually read. If SCALAR needs growing, the new bytes will be zero bytes. An OFFSET may be specified to place the read data into some other place in SCALAR than the beginning. The call is actually implemented in terms of stdio's fread(3) call. To get a true read(2) system call, see "sysread".
Remember, let 'perldoc' be thy oracle at all times of trouble! ;)

For your second question, I'm not aware of any Perl module that would allow you to implement a progress bar inside your web page. I guess this could be done by writing your current program progress to a file and displaying this file inside a continually refreshing page. The way you could track your program's progress, however, is discussed in the Progress Bar thread. I hope this helps ;).

_____________________
$"=q;grep;;$,=q"grep";for(`find . -name ".saves*~"`){s;$/;;;/(.*-(\d+) +-.*)$/;$_=&#91"ps -e -o pid | "," $2 | "," -v "," "]`@$_`?{print" ++ $1"}:{print"- $1"}&&`rm $1`;print"\n";}