WiseGuru has asked for the wisdom of the Perl Monks concerning the following question:

Hi All, I have a Perl script that i upload images, and thus gotta write to file in binary mode, and i try to print out a results success/failure/error in html, but i get a constant problem that i have been unable to solve or find a decient answer on, i believe the issue is that i change the bin mode to binary, but cannot change it back, and would like to print the results in the format of:-
print <<EOF;
yada
yada
yada
...
EOF

any help/good links thanks!

www.arobcorp.com

Replies are listed 'Best First'.
Re: Binmode binary/html/cgi
by graff (Chancellor) on Jan 08, 2007 at 01:54 UTC
    Binary mode is a property that is controlled separately for each distinct file handle, via the  binmode FILEHANDLE, ":mode" function.

    If you are writing both binary image data and (CRLF) text to the same file handle, you just need to call binmode with appropriate args before each write:

    binmode HANDLE, ":raw"; # equivalent to just "binmode HANDLE;" # write binary data to HANDLE here... binmode HANDLE, ":crlf"; # default for MS-Windows systems # write text data to HANDLE here...
    But I would expect that the binary image data and the html text data are not both being written to the same file handle. The html is supposed to be going to STDOUT, and unless you are writing binary data to the client browser, there should be no reason to do "binmode STDOUT".

    If you are writing both image data and html text to the client browser, then you did not explain your problem correctly. In any case, read up on the binmode function -- most likely it will do what you want.

Re: Binmode binary/html/cgi
by kyle (Abbot) on Jan 08, 2007 at 01:28 UTC

    Have you tried testing without the binmode (to make sure that really is the problem)? Can you show us the code that's not working (or a relevant subset)?