if ($preserve_formatting)
{
- # Scan the input file.
- while (<$ifd>)
- {
- my $hash_ref;
-
- if (/{/)
+ # Scan the input file.
+ while (<$ifd>)
{
- # Capture the hash ref
- # NB: Assumes that the next hash ref can't start on the
- # same line where the present one ended.
- # Not foolproof, but we shouldn't need a full parser,
- # since we expect relatively well-behaved input.
-
- # Quick hack to detect when we have a full hash ref to
- # parse. We can't just use a regex because of values in
- # pg_aggregate and pg_proc like '{0,0}'. This will need
- # work if we ever need to allow unbalanced braces within
- # a field value.
- my $lcnt = tr/{//;
- my $rcnt = tr/}//;
-
- if ($lcnt == $rcnt)
+ my $hash_ref;
+
+ if (/{/)
{
- # We're treating the input line as a piece of Perl, so we
- # need to use string eval here. Tell perlcritic we know what
- # we're doing.
- eval '$hash_ref = ' . $_; ## no critic (ProhibitStringyEval)
- if (!ref $hash_ref)
+ # Capture the hash ref
+ # NB: Assumes that the next hash ref can't start on the
+ # same line where the present one ended.
+ # Not foolproof, but we shouldn't need a full parser,
+ # since we expect relatively well-behaved input.
+
+ # Quick hack to detect when we have a full hash ref to
+ # parse. We can't just use a regex because of values in
+ # pg_aggregate and pg_proc like '{0,0}'. This will need
+ # work if we ever need to allow unbalanced braces within
+ # a field value.
+ my $lcnt = tr/{//;
+ my $rcnt = tr/}//;
+
+ if ($lcnt == $rcnt)
{
- die "$input_file: error parsing line $.:\n$_\n";
- }
+ # We're treating the input line as a piece of Perl, so we
+ # need to use string eval here. Tell perlcritic we know what
+ # we're doing.
+ eval '$hash_ref = '
+ . $_; ## no critic (ProhibitStringyEval)
+ if (!ref $hash_ref)
+ {
+ die "$input_file: error parsing line $.:\n$_\n";
+ }
+
+ # Annotate each hash with the source line number.
+ $hash_ref->{line_number} = $.;
- # Annotate each hash with the source line number.
- $hash_ref->{line_number} = $.;
+ # Expand tuples to their full representation.
+ AddDefaultValues($hash_ref, $schema, $catname);
+ }
+ else
+ {
+ my $next_line = <$ifd>;
+ die "$input_file: file ends within Perl hash\n"
+ if !defined $next_line;
+ $_ .= $next_line;
+ redo;
+ }
+ }
- # Expand tuples to their full representation.
- AddDefaultValues($hash_ref, $schema, $catname);
+ # If we found a hash reference, keep it, unless it is marked as
+ # autogenerated; in that case it'd duplicate an entry we'll
+ # autogenerate below. (This makes it safe for reformat_dat_file.pl
+ # with --full-tuples to print autogenerated entries, which seems like
+ # useful behavior for debugging.)
+ #
+ # Otherwise, we have a non-data string, which we need to keep in
+ # order to preserve formatting.
+ if (defined $hash_ref)
+ {
+ push @$data, $hash_ref if !$hash_ref->{autogenerated};
}
else
{
- my $next_line = <$ifd>;
- die "$input_file: file ends within Perl hash\n"
- if !defined $next_line;
- $_ .= $next_line;
- redo;
+ push @$data, $_;
}
}
-
- # If we found a hash reference, keep it, unless it is marked as
- # autogenerated; in that case it'd duplicate an entry we'll
- # autogenerate below. (This makes it safe for reformat_dat_file.pl
- # with --full-tuples to print autogenerated entries, which seems like
- # useful behavior for debugging.)
- #
- # Otherwise, we have a non-data string, which we need to keep in
- # order to preserve formatting.
- if (defined $hash_ref)
- {
- push @$data, $hash_ref if !$hash_ref->{autogenerated};
- }
- else
- {
- push @$data, $_;
- }
- }
}
else
{