| line | true | false | branch | 
 
| 73 | 1 | 0 | if (ref $file_spec eq '') { } | 
 
|  | 0 | 0 | elsif (ref $file_spec eq 'GLOB') { } | 
 
|  | 0 | 0 | elsif (ref $file_spec eq 'SCALAR') { } | 
 
| 76 | 0 | 1 | unless open my $in_fh, '<', $filename | 
 
| 80 | 0 | 1 | $filename eq '-' ? : | 
 
| 107 | 1 | 10 | if (eof do {
	$file_ref
}) | 
 
| 128 | 1 | 3 | if ($line =~ /^\s*$/) | 
 
| 134 | 3 | 0 | if ($line =~ /^\s*(\w+)\s*=/) | 
 
| 142 | 0 | 3 | unless (exists $spec->{$key}) | 
 
| 146 | 0 | 3 | if (exists $ret->{$key}) | 
 
| 155 | 0 | 3 | if ($type eq 'integer') { } | 
 
|  | 1 | 2 | elsif ($type eq 'xy(integer)') { } | 
 
|  | 0 | 2 | elsif ($type eq 'array(xy(integer))') { } | 
 
|  | 1 | 1 | elsif ($type eq 'array(start_end(xy(integer)))') { } | 
 
|  | 1 | 0 | elsif ($type eq 'layout') { } | 
 
| 157 | 0 | 0 | if ($line =~ /^(\d+)\s*$/) { } | 
 
| 169 | 1 | 0 | if ($line =~ /^\(\s*(\d+)\s*,\s*(\d+)\s*\)\s*$/) { } | 
 
| 183 | 0 | 0 | if ($line =~ /^\[\s*$xy_pair(\s*\,\s*$xy_pair)*\s*\]\s*$/) { } | 
 
| 205 | 1 | 0 | if ($line =~ /^\[\s*$se_xy_pair(\s*\,\s*$se_xy_pair)*\s*\]\s*$/) { } | 
 
| 231 | 1 | 0 | if ($line =~ /^<<\s*(\w+)\s*$/) { } | 
 
| 238 | 1 | 5 | if ($line =~ /^\s*$terminator\s*$/) | 
 
| 245 | 0 | 1 | if ($eof) | 
 
| 273 | 3 | 0 | if ($spec->{$key}{'required'}) | 
 
| 275 | 0 | 3 | unless (exists $ret->{$key}) | 
 
| 316 | 0 | 0 | if (length $line != $width) | 
 
| 320 | 0 | 0 | if ($line =~ /([^ _\-])/) | 
 
| 325 | 0 | 0 | unless $_ eq '_' | 
 
| 330 | 0 | 0 | if (length $line != $width + 1) | 
 
| 334 | 0 | 0 | if ($line =~ /([^ |])/) |