“A nearly impenetrable thicket of geekitude…”

Movable Type 3.11

I’m in the process of upgrading the software that runs my blogs from V1.65 to V3.11 of Movable Type.

So far I have run into only one problem with this process, a series of “prototype mismatch” errors when rebuilding blog index pages.

When performing a rebuild, the following messages are shown in the pop-up rebuild window:

Prototype mismatch: sub Params::Validate::validate_pos vs (\@@)
   at /.../extlib/Params/ValidatePP.pm line 139.
Prototype mismatch: sub Params::Validate::validate vs (\@$)
   at /.../extlib/Params/ValidatePP.pm line 370.

This turns out to be due to the old version of Perl (5.005_03) that is running on the machine that hosts the blog interacting badly with the version (0.73) of the Perl Validate::Params package that is bundled with Movable Type. The machine is a Cobalt RaQ, and it is apparently not a bright idea to upgrade its Perl beyond a certain point as it is used by parts of the adminstrative GUI…

Updating the .pm files for this package with those from the most recent version doesn’t fix the problem, alas.

The solution I came up with was to remove the Validate::Params files from the Movable Type installation, and then install the current version (0.74) of Validate::Params to the machine globally. This seems to work because this way of doing things installs a C language version of the package as well as the Perl version. The release notes for version 0.74 of Validate::Params refer to 0.74 as the the “I hate old Perls” release, so I guess this is specifically the problem it is intended to fix. Unfortunately, the Perl version of the module hasn’t changed in 0.74; the fix only seems to be in the compiled C version.

Obviously, I’ll have to remember not to upload new versions of this module with each new Movable Type release in the future.

I’ve the same problem, and your solution is work ! thanks a lot.

— mee7 on October 14, 2004