summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pod/pod2man.PL17
1 files changed, 16 insertions, 1 deletions
diff --git a/pod/pod2man.PL b/pod/pod2man.PL
index bd4dd418fd..cd14ce2866 100644
--- a/pod/pod2man.PL
+++ b/pod/pod2man.PL
@@ -404,7 +404,22 @@ if ($section =~ /^1/) {
$name = uc File::Basename::basename($name);
}
$name =~ s/\.(pod|p[lm])$//i;
-$name =~ s(/)(::)g; # translate Getopt/Long to Getopt::Long, etc.
+
+# Lose everything up to the first of
+# */lib/*perl* standard or site_perl module
+# */*perl*/lib from -D prefix=/opt/perl
+# */*perl*/ random module hierarchy
+# which works.
+$name =~ s-//+-/-g;
+if ($name =~ s-^.*?/lib/[^/]*perl[^/]*/--i
+ or $name =~ s-^.*?/[^/]*perl[^/]*/lib/--i
+ or $name =~ s-^.*?/[^/]*perl[^/]*/--i) {
+ # Lose ^arch/version/.
+ $name =~ s-^[^/]+/\d+\.\d+/--;
+}
+
+# Translate Getopt/Long to Getopt::Long, etc.
+$name =~ s(/)(::)g;
if ($name ne 'something') {
FCHECK: {