This bug was tracked down by Sam.
MKDoc does not work correctly distros with Perl 5.8.8 and Encode v2.18 — these cause errors as documented on the Fedora Core 5 page, this problems doesn't happen with older versions of Perl, see the Fedora Core 4 page for an attempt to generate the same error.
Workaround
The only way to get around this problem on FC5 (and it might be the same on other distros) is to install a old version of perl in /usr/local/ and use this for MKDoc — it is not possible to install a RPM of an older version of Encode since this generates lots of errors like this:
file /usr/bin/enc2xs from install of perl-Encode-2.17-8 conflicts with file from package perl-5.8.8-5
Description
This is how Sam has described the problem:
It's a bug in the Encode module, which is a core Perl module used to do utf-8 encoding and decoding. Here's the behavior that MKDoc is relying on:
$ perl -MEncode -MData::Dumper -e 'my $ref = Encode::decode_utf8({ foo => 1}); print Dumper($ref);' $VAR1 = { 'foo' => 1 };
That shows that Encode::decode_utf8 is passing a reference to a hash through un-mangled. That's what I get on my laptop, running Perl 5.8.6. However, here's what's happening on the machine that exhibits this problem:
$ perl -MEncode -MData::Dumper -e 'my $ref = Encode::decode_utf8({ foo => 1}); print Dumper($ref);' $VAR1 = 'HASH(0x9710c28)';
Now Encode::decode_utf8 is turning a hash into a stringified reference, causing the bug in MKDoc. That's Perl 5.8.8.
Sam has raised this at perlmonks see: http://perlmonks.org/?node_id=556003 and in the perl.unicode usenet group: http://www.nntp.perl.org/group/perl.unicode/3009