This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Revert "regcomp.c: Add a constant 0 element before inversion lists"
[perl5.git] / regen / overload.pl
index 343629f..6d9e04d 100644 (file)
@@ -30,21 +30,20 @@ while (<DATA>) {
   push @names, $name;
 }
 
-safer_unlink ('lib/overload/numbers.pm');
-my $c = safer_open("overload.c-new");
-my $h = safer_open("overload.h-new");
-mkdir("lib/overload", 0777) unless -d 'lib/overload';
-my $p = safer_open('lib/overload/numbers.pm');
-
-
-select $p;
+my ($c, $h) = map {
+    open_new($_, '>',
+            { by => 'regen/overload.pl', file => $_, style => '*',
+              copyright => [1997, 1998, 2000, 2001, 2005 .. 2007, 2011] });
+} 'overload.c', 'overload.h';
 
-print read_only_top(lang => 'Perl', by => 'regen/overload.pl',
-                   file => 'lib/overload/numbers.pm', copyright => [2008]);
+mkdir("lib/overload", 0777) unless -d 'lib/overload';
+my $p = open_new('lib/overload/numbers.pm', '>',
+                { by => 'regen/overload.pl',
+                  file => 'lib/overload/numbers.pm', copyright => [2008] });
 
 {
 local $" = "\n    ";
-print <<"EOF";
+print $p <<"EOF";
 package overload::numbers;
 
 our \@names = qw#
@@ -58,20 +57,10 @@ our \@enums = qw#
 { my \$i = 0; our %names = map { \$_ => \$i++ } \@names }
 
 { my \$i = 0; our %enums = map { \$_ => \$i++ } \@enums }
-
 EOF
 }
 
-for ([$c, 'overload.c'], [$h, 'overload.h']) {
-    my ($handle, $file) = @$_;
-    print $handle read_only_top(lang => 'C', by => 'regen/overload.pl',
-                               file => $file, style => '*',
-                               copyright => [1997, 1998, 2000, 2001,
-                                            2005 .. 2007, 2011]);
-}
-
-select $h;
-print "enum {\n";
+print $h "enum {\n";
 
 for (0..$#enums) {
     my $op = $names[$_];
@@ -80,17 +69,16 @@ for (0..$#enums) {
     die if $op =~ m{\*/};
     my $l =   3 - int((length($enums[$_]) + 9) / 8);
     $l = 1 if $l < 1;
-    printf "    %s_amg,%s/* 0x%02x %-8s */\n", $enums[$_],
+    printf $h "    %s_amg,%s/* 0x%02x %-8s */\n", $enums[$_],
        ("\t" x $l), $_, $op;
 }
 
-print <<'EOF';
+print $h <<'EOF';
     max_amg_code
     /* Do not leave a trailing comma here.  C9X allows it, C89 doesn't. */
 };
 
 #define NofAMmeth max_amg_code
-
 EOF
 
 print $c <<'EOF';
@@ -130,12 +118,9 @@ print $c <<"EOT";
 };
 EOT
 
-safer_close($h);
-safer_close($c);
-safer_close($p);
-rename_if_different("overload.c-new", "overload.c");
-rename_if_different("overload.h-new","overload.h");
-
+foreach ($h, $c, $p) {
+    read_only_bottom_close_and_rename($_);
+}
 __DATA__
 # Fallback should be the first
 fallback       ()
@@ -213,5 +198,3 @@ concat_ass  (.=
 smart          (~~
 ftest           (-X
 regexp          (qr
-# Note: Perl_Gv_AMupdate() assumes that DESTROY is the last entry
-DESTROY                DESTROY