From: Michael G. Schwern Date: Sat, 21 Dec 2002 19:29:41 +0000 (-0800) Subject: Holding filehandle open X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=b6c146dd05d7f6ee2801592b9ba97b59966f4411;p=p5sagit%2Fp5-mst-13.2.git Holding filehandle open Message-ID: <20021222032941.GD24887@blackrider.schwern.org> p4raw-id: //depot/perl@18372 --- diff --git a/lib/AutoSplit.pm b/lib/AutoSplit.pm index 3c45d92..7fd9487 100644 --- a/lib/AutoSplit.pm +++ b/lib/AutoSplit.pm @@ -227,12 +227,12 @@ sub autosplit_file { # allow just a package name to be used $filename .= ".pm" unless ($filename =~ m/\.pm\z/); - open(IN, "<$filename") or die "AutoSplit: Can't open $filename: $!\n"; + open(my $in, "<$filename") or die "AutoSplit: Can't open $filename: $!\n"; my($pm_mod_time) = (stat($filename))[9]; my($autoloader_seen) = 0; my($in_pod) = 0; my($def_package,$last_package,$this_package,$fnr); - while () { + while (<$in>) { # Skip pod text. $fnr++; $in_pod = 1 if /^=\w/; @@ -297,7 +297,8 @@ sub autosplit_file { my @cache = (); my $caching = 1; $last_package = ''; - while () { + my $out; + while (<$in>) { $fnr++; $in_pod = 1 if /^=\w/; $in_pod = 0 if /^=cut/; @@ -308,8 +309,9 @@ sub autosplit_file { if (/^package\s+([\w:]+)\s*;/) { $this_package = $def_package = $1; } + if (/^sub\s+([\w:]+)(\s*(?:\(.*?\))?(?:$attr_list)?)/) { - print OUT "# end of $last_package\::$subname\n1;\n" + print $out "# end of $last_package\::$subname\n1;\n" if $last_package; $subname = $1; my $proto = $2 || ''; @@ -329,18 +331,19 @@ sub autosplit_file { my($lpath) = catfile($modnamedir, "$lname.al"); my($spath) = catfile($modnamedir, "$sname.al"); my $path; - if (!$Is83 and open(OUT, ">$lpath")){ + + if (!$Is83 and open($out, ">$lpath")){ $path=$lpath; print " writing $lpath\n" if ($Verbose>=2); } else { - open(OUT, ">$spath") or die "Can't create $spath: $!\n"; + open($out, ">$spath") or die "Can't create $spath: $!\n"; $path=$spath; print " writing $spath (with truncated name)\n" if ($Verbose>=1); } push(@outfiles, $path); my $lineno = $fnr - @cache; - print OUT <$al_idx_file") or + open(my $ts,">$al_idx_file") or carp "AutoSplit: unable to create timestamp file ($al_idx_file): $!"; - print TS "# Index created by AutoSplit for $filename\n"; - print TS "# (file acts as timestamp)\n"; + print $ts "# Index created by AutoSplit for $filename\n"; + print $ts "# (file acts as timestamp)\n"; $last_package = ''; for my $fqs (@subnames) { my($subname) = $fqs; $subname =~ s/.*:://; - print TS "package $package{$fqs};\n" + print $ts "package $package{$fqs};\n" unless $last_package eq $package{$fqs}; - print TS "sub $subname $proto{$fqs};\n"; + print $ts "sub $subname $proto{$fqs};\n"; $last_package = $package{$fqs}; } - print TS "1;\n"; - close(TS); + print $ts "1;\n"; + close($ts); _check_unique($filename, $Maxlen, 1, @outfiles);