|  line  | 
 true  | 
 false  | 
 branch  | 
 
| 
42
 | 
 2  | 
 9  | 
 exists $params{'record'} ? :  | 
 
| 
43
 | 
 7  | 
 4  | 
 exists $params{'features'} ? :  | 
 
| 
49
 | 
 7  | 
 4  | 
 if (defined $params{'file'})  | 
 
| 
61
 | 
 9  | 
 0  | 
 if (@_) { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($$self{'filename'}) { }  | 
 
| 
70
 | 
 4  | 
 5  | 
 if (ref $file) { }  | 
 
| 
71
 | 
 0  | 
 4  | 
 unless ($file->isa('IO::Handle'))  | 
 
| 
76
 | 
 0  | 
 5  | 
 unless $fh = 'IO::File'->new($file)  | 
 
| 
83
 | 
 4  | 
 5  | 
 ref $file ? :  | 
 
| 
84
 | 
 0  | 
 9  | 
 unless $fh->close  | 
 
| 
111
 | 
 0  | 
 0  | 
 defined $here ? :  | 
 
| 
 | 
 0  | 
 0  | 
 defined $continuation ? :  | 
 
| 
 | 
 0  | 
 545  | 
 if $$self{'debug'}  | 
 
| 
115
 | 
 9  | 
 536  | 
 if $line =~ /^\s*#/  | 
 
| 
116
 | 
 18  | 
 518  | 
 if $line =~ /^\s*$/  | 
 
| 
118
 | 
 56  | 
 462  | 
 if ($here) { }  | 
 
| 
 | 
 12  | 
 450  | 
 elsif ($continuation) { }  | 
 
| 
119
 | 
 16  | 
 40  | 
 if ($line =~ /\s*$here\s*$/) { }  | 
 
| 
120
 | 
 0  | 
 16  | 
 if $$self{'debug'}  | 
 
| 
124
 | 
 0  | 
 40  | 
 if $$self{'debug'}  | 
 
| 
128
 | 
 12  | 
 0  | 
 if ($line =~ /^\s*"(.*?)"\s*(\\)?\s*$/ or $line =~ /^\s*(.*?)\s*(\\)?\s*$/) { }  | 
 
| 
130
 | 
 0  | 
 12  | 
 if $$self{'debug'}  | 
 
| 
132
 | 
 12  | 
 0  | 
 unless $2  | 
 
| 
137
 | 
 42  | 
 408  | 
 if ($line =~ /^\s*$LABEL\s*=\s*\($TRAILING_WHITESPACE$/ or $$self{'features'}{'quotedkeys'} and $line =~ /^\s*"$QUOTED_LABEL"\s*=\s*\($TRAILING_WHITESPACE$/) { }  | 
 
| 
 | 
 8  | 
 400  | 
 elsif ($line =~ /^\s*\($TRAILING_WHITESPACE$/) { }  | 
 
| 
 | 
 50  | 
 350  | 
 elsif ($line =~ /^\s*\)$TRAILING_WHITESPACE$/) { }  | 
 
| 
 | 
 37  | 
 313  | 
 elsif ($line =~ /^\s*$LABEL\s*=\s*{$TRAILING_WHITESPACE$/ or $$self{'features'}{'quotedkeys'} and $line =~ /^\s*"$QUOTED_LABEL"\s*=\s*{$TRAILING_WHITESPACE$/) { }  | 
 
| 
 | 
 33  | 
 280  | 
 elsif ($line =~ /^\s*{$TRAILING_WHITESPACE$/) { }  | 
 
| 
 | 
 70  | 
 210  | 
 elsif ($line =~ /^\s*}$TRAILING_WHITESPACE$/) { }  | 
 
| 
 | 
 1  | 
 209  | 
 elsif ($$self{'features'}{'includes'} and $line =~ /^\s*$LABEL\s*=\s*\@include\((.+)\)$TRAILING_WHITESPACE$/ || $$self{'features'}{'quotedkeys'} && $line =~ /^\s*"$QUOTED_LABEL"\s*=\s*\@include\((.+)\)$TRAILING_WHITESPACE$/) { }  | 
 
| 
 | 
 8  | 
 201  | 
 elsif ($line =~ /^\s*$LABEL\s*=\s*<<(\w+)\s*$/ or $$self{'features'}{'quotedkeys'} and $line =~ /^\s*"$QUOTED_LABEL"\s*=\s*<<(\w+)\s*$/) { }  | 
 
| 
 | 
 130  | 
 71  | 
 elsif ($line =~ /^\s*$LABEL\s*=\s*"(.*)"\s*(\\)?$TRAILING_WHITESPACE$/ or $$self{'features'}{'quotedkeys'} and $line =~ /^\s*"$QUOTED_LABEL"\s*=\s*"(.*)"\s*(\\)?$TRAILING_WHITESPACE$/ or $line =~ /^\s*$LABEL\s*=\s*(.*?)(\\)?\s*$/ or $$self{'features'}{'quotedkeys'} and $line =~ /^\s*"$QUOTED_LABEL"\s*=\s*(.*?)(\\)?\s*$/) { }  | 
 
| 
 | 
 8  | 
 63  | 
 elsif ($line =~ /^\s*<<(\w+)\s*$/) { }  | 
 
| 
 | 
 2  | 
 61  | 
 elsif ($$self{'features'}{'includes'} and $line =~ /^\s*\@include\((.+)\)$TRAILING_WHITESPACE$/) { }  | 
 
| 
 | 
 61  | 
 0  | 
 elsif ($line =~ /^\s*"(.*)"\s*(\\)?$TRAILING_WHITESPACE$/ or $line =~ /^\s*(.*?)(\\)?\s*$/) { }  | 
 
| 
140
 | 
 0  | 
 42  | 
 if $$self{'debug'}  | 
 
| 
141
 | 
 0  | 
 42  | 
 if (ref $value eq 'ARRAY')  | 
 
| 
147
 | 
 28  | 
 14  | 
 if ($$self{'features'}{'quotedkeys'})  | 
 
| 
156
 | 
 0  | 
 8  | 
 if $$self{'debug'}  | 
 
| 
157
 | 
 0  | 
 8  | 
 if (ref $value ne 'ARRAY')  | 
 
| 
166
 | 
 0  | 
 50  | 
 if $$self{'debug'}  | 
 
| 
167
 | 
 0  | 
 50  | 
 if (ref $value ne 'ARRAY')  | 
 
| 
170
 | 
 0  | 
 50  | 
 if ($#stack == 0)  | 
 
| 
179
 | 
 0  | 
 37  | 
 if $$self{'debug'}  | 
 
| 
180
 | 
 0  | 
 37  | 
 if (ref $value eq 'ARRAY')  | 
 
| 
186
 | 
 24  | 
 13  | 
 if ($$self{'features'}{'quotedkeys'})  | 
 
| 
195
 | 
 0  | 
 33  | 
 if $$self{'debug'}  | 
 
| 
196
 | 
 0  | 
 33  | 
 if (ref $value ne 'ARRAY')  | 
 
| 
205
 | 
 0  | 
 70  | 
 if $$self{'debug'}  | 
 
| 
206
 | 
 0  | 
 70  | 
 if (ref $value eq 'ARRAY')  | 
 
| 
209
 | 
 0  | 
 70  | 
 if ($#stack == 0)  | 
 
| 
219
 | 
 0  | 
 1  | 
 if $$self{'debug'}  | 
 
| 
223
 | 
 0  | 
 1  | 
 if ($$self{'features'}{'quotedkeys'})  | 
 
| 
227
 | 
 0  | 
 1  | 
 unless my $fh = 'IO::File'->new($file)  | 
 
| 
232
 | 
 0  | 
 1  | 
 ref $file ? :  | 
 
| 
233
 | 
 0  | 
 1  | 
 unless $fh->close  | 
 
| 
240
 | 
 0  | 
 8  | 
 if $$self{'debug'}  | 
 
| 
244
 | 
 4  | 
 4  | 
 if ($$self{'features'}{'quotedkeys'})  | 
 
| 
258
 | 
 0  | 
 130  | 
 if $$self{'debug'}  | 
 
| 
262
 | 
 76  | 
 54  | 
 if ($$self{'features'}{'quotedkeys'})  | 
 
| 
266
 | 
 0  | 
 130  | 
 if (ref $value eq 'ARRAY')  | 
 
| 
271
 | 
 0  | 
 130  | 
 if $3 and $$self{'debug'}  | 
 
| 
272
 | 
 6  | 
 124  | 
 if $3  | 
 
| 
274
 | 
 0  | 
 8  | 
 if $$self{'debug'}  | 
 
| 
277
 | 
 0  | 
 8  | 
 if (ref $value ne 'ARRAY')  | 
 
| 
287
 | 
 0  | 
 2  | 
 if $$self{'debug'}  | 
 
| 
290
 | 
 0  | 
 2  | 
 unless my $fh = 'IO::File'->new($file)  | 
 
| 
295
 | 
 0  | 
 2  | 
 ref $file ? :  | 
 
| 
296
 | 
 0  | 
 2  | 
 unless $fh->close  | 
 
| 
299
 | 
 0  | 
 2  | 
 if (ref $value ne 'ARRAY')  | 
 
| 
306
 | 
 0  | 
 61  | 
 if $$self{'debug'}  | 
 
| 
309
 | 
 0  | 
 61  | 
 if (ref $value ne 'ARRAY')  | 
 
| 
315
 | 
 6  | 
 55  | 
 if $2  | 
 
| 
321
 | 
 0  | 
 12  | 
 if ($#stack != 0)  | 
 
| 
332
 | 
 2  | 
 0  | 
 if (@_) { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($$self{'filename'}) { }  | 
 
| 
341
 | 
 0  | 
 2  | 
 if (ref $file) { }  | 
 
| 
342
 | 
 0  | 
 0  | 
 unless ($file->isa('IO::Handle'))  | 
 
| 
347
 | 
 0  | 
 2  | 
 unless $fh = 'IO::File'->new(">$file")  | 
 
| 
368
 | 
 29  | 
 50  | 
 if ($ref) { }  | 
 
| 
369
 | 
 17  | 
 12  | 
 if ($ref eq 'HASH') { }  | 
 
| 
 | 
 12  | 
 0  | 
 elsif ($ref eq 'ARRAY') { }  | 
 
| 
417
 | 
 4  | 
 46  | 
 if ($value =~ /\n/) { }  | 
 
| 
 | 
 5  | 
 41  | 
 elsif ($value =~ /^\s+/ or $value =~ /\s+$/) { }  | 
 
| 
418
 | 
 0  | 
 4  | 
 unless $value =~ /\n$/  | 
 
| 
436
 | 
 33  | 
 19  | 
 if ($$self{'features'}{'quotedkeys'}) { }  | 
 
| 
437
 | 
 23  | 
 10  | 
 if ($key =~ /^((?:\w|-|\.)+)$/) { }  | 
 
| 
456
 | 
 4  | 
 2  | 
 if (not ref $value or ref $value ne 'HASH')  | 
 
| 
472
 | 
 0  | 
 124  | 
 if $$self{'debug'}  | 
 
| 
474
 | 
 126  | 
 249  | 
 if m[^/$]  | 
 
| 
475
 | 
 0  | 
 249  | 
 if $$self{'debug'}  | 
 
| 
482
 | 
 123  | 
 124  | 
 defined $context ? :  | 
 
| 
484
 | 
 49  | 
 198  | 
 if ($fragment =~ /^\[(\d+)\]$/) { }  | 
 
| 
 | 
 105  | 
 93  | 
 elsif ($$self{'features'}{'quotedkeys'}) { }  | 
 
| 
486
 | 
 2  | 
 47  | 
 if (ref $entry ne 'ARRAY')  | 
 
| 
487
 | 
 0  | 
 2  | 
 if (@_)  | 
 
| 
492
 | 
 2  | 
 45  | 
 if ($#{$entry;} < $index)  | 
 
| 
493
 | 
 0  | 
 2  | 
 if (@_)  | 
 
| 
501
 | 
 0  | 
 105  | 
 if $$self{'debug'}  | 
 
| 
502
 | 
 0  | 
 105  | 
 if (ref $entry ne 'HASH')  | 
 
| 
503
 | 
 0  | 
 0  | 
 if (@_)  | 
 
| 
508
 | 
 4  | 
 101  | 
 unless (exists $$entry{$fragment})  | 
 
| 
509
 | 
 4  | 
 0  | 
 if (@_)  | 
 
| 
516
 | 
 0  | 
 93  | 
 if $$self{'debug'}  | 
 
| 
517
 | 
 93  | 
 0  | 
 if ($fragment =~ /((?:\w|-|\.)+)/) { }  | 
 
| 
518
 | 
 0  | 
 93  | 
 if (ref $entry ne 'HASH')  | 
 
| 
519
 | 
 0  | 
 0  | 
 if (@_)  | 
 
| 
524
 | 
 4  | 
 89  | 
 unless (exists $$entry{$fragment})  | 
 
| 
525
 | 
 4  | 
 0  | 
 if (@_)  | 
 
| 
547
 | 
 0  | 
 6  | 
 if $$self{'debug'}  | 
 
| 
549
 | 
 2  | 
 8  | 
 if m[^/$]  | 
 
| 
550
 | 
 0  | 
 8  | 
 if $$self{'debug'}  | 
 
| 
558
 | 
 2  | 
 6  | 
 defined $context ? :  | 
 
| 
560
 | 
 2  | 
 6  | 
 if ($fragment =~ /^\[(\d+)\]$/) { }  | 
 
| 
 | 
 3  | 
 3  | 
 elsif ($$self{'features'}{'quotedkeys'}) { }  | 
 
| 
562
 | 
 0  | 
 2  | 
 if (ref $entry ne 'ARRAY')  | 
 
| 
565
 | 
 0  | 
 2  | 
 if (@key) { }  | 
 
| 
566
 | 
 0  | 
 0  | 
 if (exists $$entry[$index]) { }  | 
 
| 
569
 | 
 0  | 
 0  | 
 if ($key[0] =~ /^\[(\d+)\]$/) { }  | 
 
| 
581
 | 
 0  | 
 3  | 
 if $$self{'debug'}  | 
 
| 
582
 | 
 0  | 
 3  | 
 if (ref $entry ne 'HASH')  | 
 
| 
585
 | 
 1  | 
 2  | 
 if (@key) { }  | 
 
| 
586
 | 
 1  | 
 0  | 
 if (exists $$entry{$fragment}) { }  | 
 
| 
589
 | 
 0  | 
 0  | 
 if ($key[0] =~ /^\[(\d+)\]$/) { }  | 
 
| 
600
 | 
 0  | 
 3  | 
 if $$self{'debug'}  | 
 
| 
601
 | 
 3  | 
 0  | 
 if ($fragment =~ /((?:\w|-|\.)+)/) { }  | 
 
| 
602
 | 
 0  | 
 3  | 
 if (ref $entry ne 'HASH')  | 
 
| 
605
 | 
 1  | 
 2  | 
 if (@key) { }  | 
 
| 
606
 | 
 1  | 
 0  | 
 if (exists $$entry{$fragment}) { }  | 
 
| 
609
 | 
 0  | 
 0  | 
 if ($key[0] =~ /^\[(\d+)\]$/) { }  |