Digital UNIX hints
[p5sagit/p5-mst-13.2.git] / installperl
index e6e2bbe..d4cb711 100755 (executable)
@@ -30,6 +30,14 @@ umask 022;
 
 @pods = (<pod/*.pod>);
 
+%archpms = (Config => 1, FileHandle => 1, overload => 1);
+find(sub {
+       if ("$File::Find::dir/$_" =~ m{^ext/[^/]+/(.*)\.pm$}) {
+           (my $pm = $1) =~ s{^lib/}{};
+           $archpms{$pm} = 1;
+       }
+    }, 'ext');
+
 $ver = $];
 $release = substr($ver,0,3);   # Not used presently.
 $patchlevel = substr($ver,3,2);
@@ -171,7 +179,8 @@ foreach $file (@corefiles) {
 
 $mainperl_is_instperl = 0;
 
-if (-w $mainperldir && ! &samepath($mainperldir, $installbin) && !$nonono) {
+if (!$nonono && -t STDIN && -t STDERR
+       && -w $mainperldir && ! &samepath($mainperldir, $installbin)) {
     local($usrbinperl) = "$mainperldir/perl$exe_ext";
     local($instperl)   = "$installbin/perl$exe_ext";
     local($expinstperl)        = "$binexp/perl$exe_ext";
@@ -349,7 +358,8 @@ sub installlib {
     $name = "$dir/$name" if $dir ne '';
 
     my $installlib = $installprivlib;
-    if ($dir =~ /^auto/ || $name =~ /^(Config|FileHandle|Safe)\.pm$/) {
+    if ($dir =~ /^auto/ ||
+         ($name =~ /^(.*)\.(?:pm|pod)$/ && $archpms{$1})) {
         $installlib = $installarchlib;
        return unless $do_installarchlib;
     } else {