in reply to Re^2: printing file downloads
in thread printing file downloads
print will know how may bytes of the possible 8K are used in the $buff and that many bytes are output. In your case, you are using STDOUT, I think you also have to close it like I did in the file -> file version. Besides flushing any intermediate stuff, also says "EOF". There might be some alternate way when dealing with STDOUT. There are unbuffered versions, sysread and syswrite, I would read the man pages carefully. Don't mix buffered and non-buffered output to the same file handle.open(my $inbin, '<', $infile) || die "unable to open $infile"; binmode($inbin) || die "unable to set binmode $infile; open (my $outbin, '>', $outfile) || die "unable to open $outfile"; binmode($outbin) || die "unable to set binmode $outfile"; while (read($inbin, my $buff, 8 * 2**10)) { print $outbin $buff; } close($inbin) || die("unable to close $infile"); close($outbin) || die("unable to close $outfile");
You asked another question, don't know if it is relevant given the above, but for example on Unix, the way that the binary file test operator works, is that the file is opened and some amount of the file is read - there is an algorithm to decide whether this is a binary file or not. Anyway, you have the file, and you can just to a -b test on it, if that was of interest. However with an attachment, you may not care.
PS: I don't know how setting binmode could fail, but I just kept that stuff when I copied and pasted. I don't think the die message is necessary.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: printing file downloads
by Anonymous Monk on Dec 23, 2010 at 18:06 UTC | |
by Marshall (Canon) on Dec 23, 2010 at 19:27 UTC | |
by Anonymous Monk on Dec 23, 2010 at 19:31 UTC | |
by Anonymous Monk on Dec 24, 2010 at 05:27 UTC |