MM_Unix.pm : work around File::Find problem on VMS
[p5sagit/p5-mst-13.2.git] / lib / ExtUtils / MM_VMS.pm
index 787fda6..3fedae8 100644 (file)
@@ -14,7 +14,7 @@ use VMS::Filespec;
 use File::Basename;
 use File::Spec;
 use vars qw($Revision @ISA $VERSION);
-($VERSION) = $Revision = '5.63_01';
+($VERSION) = $Revision = '5.65';
 
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
@@ -734,42 +734,50 @@ command line to find args.
 
 sub pm_to_blib {
     my($self) = @_;
-    my($line,$from,$to,@m);
     my($autodir) = File::Spec->catdir($self->{INST_LIB},'auto');
-    my(@files) = @{$self->{PM_TO_BLIB}};
+    my(%files) = @{$self->{PM_TO_BLIB}};
 
-    push @m, q{
+    my $m = <<'MAKE_FRAG';
 
 # Dummy target to match Unix target name; we use pm_to_blib.ts as
 # timestamp file to avoid repeated invocations under VMS
 pm_to_blib : pm_to_blib.ts
        $(NOECHO) $(NOOP)
 
-};
-
-    push @m, <<'MAKE_FRAG', 
 # As always, keep under DCL's 255-char limit
 pm_to_blib.ts : $(TO_INST_PM)
+MAKE_FRAG
+
+    if( keys %files ) {
+        $m .= <<'MAKE_FRAG';
        $(NOECHO) $(RM_F) .MM_tmp
 MAKE_FRAG
 
-    $line = '';  # avoid uninitialized var warning
-    while ($from = shift(@files),$to = shift(@files)) {
-       $line .= " $from $to";
-       if (length($line) > 128) {
-           push(@m,"\t\$(NOECHO) \$(PERL) -e \"print '$line'\" >>.MM_tmp\n");
-           $line = '';
-       }
-    }
-    push(@m,"\t\$(NOECHO) \$(PERL) -e \"print '$line'\" >>.MM_tmp\n") if $line;
+        my $line = '';
+        while (my($from, $to) = each %files) {
+            $line .= " $from $to";
+            if (length($line) > 128) {
+                $m .= sprintf <<'MAKE_FRAG', $line;
+       $(NOECHO) $(PERL) -e "print '%s'" >>.MM_tmp
+MAKE_FRAG
+                $line = '';
+            }
+        }
+        $m .= sprintf <<'MAKE_FRAG', $line if $line;
+       $(NOECHO) $(PERL) -e "print '%s'" >>.MM_tmp
+MAKE_FRAG
 
-    push(@m,q[ $(PERLRUN) "-MExtUtils::Install" -e "pm_to_blib({split(' ',<STDIN>)},'].$autodir.q[','$(PM_FILTER)')" <.MM_tmp]);
-    push(@m,qq[
-       \$(NOECHO) Delete/NoLog/NoConfirm .MM_tmp;
-       \$(NOECHO) \$(TOUCH) pm_to_blib.ts
-]);
+        $m .= sprintf <<'MAKE_FRAG', $autodir;
+       $(PERLRUN) "-MExtUtils::Install" -e "pm_to_blib({split(' ',<STDIN>)},'%s','$(PM_FILTER)')" <.MM_tmp
+       $(NOECHO) $(RM_F) .MM_tmp
+MAKE_FRAG
 
-    join('',@m);
+    }
+    $m .= <<'MAKE_FRAG';
+       $(NOECHO) $(TOUCH) pm_to_blib.ts
+MAKE_FRAG
+
+    return $m;
 }
 
 =item tool_autosplit (override)
@@ -1937,7 +1945,7 @@ Consequently, it hasn't really been tested, and may well be incomplete.
 
 =cut
 
-our %olbs;
+use vars qw(%olbs);
 
 sub makeaperl {
     my($self, %attribs) = @_;