[svn:parrot] r43567 - branches/one_make/tools/build
jkeenan at svn.parrot.org
jkeenan at svn.parrot.org
Sat Jan 23 16:40:10 UTC 2010
Author: jkeenan
Date: Sat Jan 23 16:40:10 2010
New Revision: 43567
URL: https://trac.parrot.org/parrot/changeset/43567
Log:
Move declaration of read handle inside parse_file(); document change.
Modified:
branches/one_make/tools/build/h2inc.pl
Modified: branches/one_make/tools/build/h2inc.pl
==============================================================================
--- branches/one_make/tools/build/h2inc.pl Sat Jan 23 16:09:07 2010 (r43566)
+++ branches/one_make/tools/build/h2inc.pl Sat Jan 23 16:40:10 2010 (r43567)
@@ -16,24 +16,21 @@
my $usage = "Usage: $0 <input_file> <output_file>\n";
-my $in_file = shift or die $usage;
-my $out_file = shift or die $usage;
-die $usage if @ARGV;
-
-open my $in_fh, '<', $in_file or die "Can't open $in_file: $!\n";
-my $directive = parse_file($in_file, $in_fh, $out_file);
-close $in_fh;
+die $usage unless @ARGV == 2;
+my ($in_file, $out_file) = @ARGV;
+
+my $directive = parse_file($in_file, $out_file);
die "invalid output file: '$out_file' for input '$in_file'" unless $directive;
my @defs = perform_directive($directive);
my $target = $directive->{file};
my $gen;
if ($target =~ /\.pm$/) {
- $gen = join "\n", &const_to_perl(@defs);
+ $gen = join "\n", const_to_perl(@defs);
$gen .= "\n1;";
}
else {
- $gen = join "\n", &const_to_parrot(@defs);
+ $gen = join "\n", const_to_parrot(@defs);
}
open my $out_fh, '>', $out_file or die "Can't open $out_file: $!\n";
@@ -174,7 +171,7 @@
sub perform_directive {
my ($d) = @_;
- my @defs = prepend_prefix $d->{prefix}, @{ $d->{defs} };
+ my @defs = prepend_prefix( $d->{prefix}, @{ $d->{defs} } );
if ( my $subst = $d->{subst} ) {
@defs = transform_name( sub { local $_ = shift; eval $subst; $_ }, @defs );
}
@@ -187,10 +184,9 @@
=item * Arguments
- $directive = parse_file($in_file, $in_fh, $out_file);
+ $directive = parse_file($in_file, $out_file);
-List of 3 elements: string holding name of incoming file; read handle to that
-file; string holding name of outgoing file.
+List of 2 elements: string holding name of incoming file; string holding name of outgoing file.
=item * Return Value
@@ -201,9 +197,10 @@
=cut
sub parse_file {
- my ( $in_file, $fh, $out_file) = @_;
+ my ( $in_file, $out_file) = @_;
my ( @directives, %values, $last_val, $cur, $or_continues );
+ open my $fh, '<', $in_file or die "Can't open $in_file: $!\n";
while ( my $line = <$fh> ) {
if (
$line =~ m!
@@ -295,6 +292,7 @@
}
}
$cur and die "Missing '&end_gen' in $in_file\n";
+ close $fh or die "Could not close handle to $in_file after reading: $!";
return;
}
More information about the parrot-commits
mailing list