I've recently acquired a scanner, the Avision model @2500.
It allows uploads via HTTP. While trying to code a CGI script which catches the uploads, I found that CGI.pm (3.15, from perl-5.8.8, compiled from the FreeBSD ports) and also more recent versions of CGI.pm (3.29, 3.33, 3.37, 3.42, 3.43) do not handle PUT at all.
I've prepared a small patch for 3.15, and the same patch for 3.33, and the same patch for 3.37, and the same patch for 3.42, and the same patch for 3.43, which at least handles the case I was interested in.
It's bugid 45673 on CPAN and fixed with 3.44.
On FreeBSD >= 6.3, there are two instances of CGI.pm, one from the base perl, the other from the package:
In perl-5.14, the patch was backed out, due to several issues, among them with the RFC. I'm not sure about all the boundary issues, but I think CGI.pm should at least honor PUT.
/usr/local/lib/perl5/5.8.8/CGI.pm (3.15, from pkg perl-5.8.8_1) /usr/local/lib/perl5/site_perl/5.8.8/CGI.pm (3.42, from p5-CGI.pm-3.42,1)
How to apply for 3.15:
cd /tmp/ fetch http://opsec.eu/src/CGI-patch/CGI-3.15-patch cd /usr/local/lib/perl5/5.8.8 patch < /tmp/CGI-3.15-patch
How to apply for 3.33:
cd /tmp/ fetch http://opsec.eu/src/CGI-patch/CGI-3.33-patch cd /usr/local/lib/perl5/site_perl/5.8.8 patch < /tmp/CGI-3.33-patch
How to apply for 3.37:
cd /tmp/ fetch http://opsec.eu/src/CGI-patch/CGI-3.37-patch cd /usr/local/lib/perl5/site_perl/5.8.8 patch < /tmp/CGI-3.37-patch
How to apply for 3.42:
cd /tmp/ fetch http://opsec.eu/src/CGI-patch/CGI-3.42-patch cd /usr/local/lib/perl5/site_perl/5.8.8 patch < /tmp/CGI-3.42-patch
How to apply for 3.43:
cd /tmp/ fetch http://opsec.eu/src/CGI-patch/CGI-3.43-patch cd /usr/local/lib/perl5/site_perl/5.10.0 patch < /tmp/CGI-3.43-patch
How to apply for 3.59:
cd /tmp/ fetch http://opsec.eu/src/CGI-patch/CGI-3.59-patch cd /usr/local/lib/perl5/site_perl/5.14.2 patch < /tmp/CGI-3.59-patch