configpm, our $summary : unique
Elizabeth Mattijsen [Sat, 15 Nov 2003 22:18:32 +0000 (23:18 +0100)]
 Message-Id: <p05111b03bbdc478d10cb@[192.168.56.3]>
(plus comments)

p4raw-id: //depot/perl@21732

configpm

index 90e95a1..f232c9b 100755 (executable)
--- a/configpm
+++ b/configpm
@@ -219,15 +219,18 @@ open(MYCONFIG,"<myconfig.SH") || die "open myconfig.SH failed: $!";
 do { print CONFIG $_ } until !defined($_ = <MYCONFIG>) || /^\s*$/;
 close(MYCONFIG);
 
+# NB. as $summary is unique, we need to copy it in a lexical variable
+# before expanding it, because may have been made readonly if a perl
+# interpreter has been cloned.
+
 print CONFIG "\n!END!\n", <<'EOT';
-my $summary_expanded = 0;
+my $summary_expanded;
 
 sub myconfig {
-    return $summary if $summary_expanded;
-    $summary =~ s{\$(\w+)}
+    return $summary_expanded if $summary_expanded;
+    ($summary_expanded = $summary) =~ s{\$(\w+)}
                 { my $c = $Config{$1}; defined($c) ? $c : 'undef' }ge;
-    $summary_expanded = 1;
-    $summary;
+    $summary_expanded;
 }
 
 our $Config_SH : unique = <<'!END!';