Condition Coverage

blib/lib/Text/CSV_PP.pm
Criterion Covered Total %
condition 866 1065 81.2


and 3 conditions

line !l l&&!r l&&r condition
274 3568 3 2 defined $quo and length $quo
277 2 3329 242 defined $quo and $quo =~ /^[ \t]/
278 4 3037 290 defined $esc and $esc =~ /^[ \t]/
288 11997 419 35 defined $sep and length $sep
290 12419 14 18 defined $quo and length $quo
328 95 921 8 @_ > 0 and ref $_[0] ne "HASH"
351 1 6 2758 /^[a-z]/ and exists $def_attr{$_}
353 22 2520 216 defined $attr{$_} and /_char$/
371 984 4 21 $quote_aliased and defined $attr{'quote_char'}
388 644 324 6 defined $self->{'callbacks'} and ref $self->{'callbacks'} ne "HASH"
394 964 2 8 defined $\ and not exists $attr{'eol'}
511 6 6 6 defined $quote && length $quote
556 5 329 21 defined $sep && length $sep
629 0 933 61 $self and $f
933 56 5 $self and $f and ref $f
989 0 5 $self and $f and ref $f and ref $f eq "CODE"
667 0 13 89 $self and $f
13 81 8 $self and $f and ref $f
94 2 6 $self and $f and ref $f and ref $f eq "CODE"
842 28 4 8 @_ == 1 && ref $_[0] eq 'HASH'
848 4 10 23 $cbk =~ /^[\w.]+$/ and ref $cb->{$cbk} eq "CODE"
875 66 4 1794 $self and ref $self
1 108 1685 UNIVERSAL::isa($self, __PACKAGE__) and exists $self->{'_ERROR_DIAG'}
70 108 1686 $self and ref $self and (UNIVERSAL::isa($self, __PACKAGE__) and exists $self->{'_ERROR_DIAG'})
882 1302 346 37 exists $self->{'_ERROR_SRC'} and $self->{'diag_verbose'}
885 7 1345 333 $diag[0] and $self->{'callbacks'}
1345 323 10 $diag[0] and $self->{'callbacks'} and $self->{'callbacks'}{'error'}
891 10 297 80 $diag[0] and $diag[0] != 2012
896 3 1 76 $self and ref $self
903 60 0 16 $self->{'diag_verbose'} and $self->{'_ERROR_INPUT'}
909 1 72 0 @c >= 11 and $c[10]
72 0 0 @c >= 11 and $c[10] and ref $c[10] eq "HASH"
913 0 0 0 exists $hints->{'autodie'} and $hints->{'autodie'}
0 0 0 exists $hints->{'guard Fatal'} and not exists $hints->{'no Fatal'}
965 3 1 25 ref $self->{'_FFLAGS'} and $idx >= 0
4 1 24 ref $self->{'_FFLAGS'} and $idx >= 0 and $idx < @{$self->{'_FFLAGS'};}
972 1 1 9 ref $self->{'_FFLAGS'} and $idx >= 0
2 1 8 ref $self->{'_FFLAGS'} and $idx >= 0 and $idx < @{$self->{'_FFLAGS'};}
991 1 1 1397 @_ > 0 && $self->__combine(\$str, \@_, 0)
1008 6 205 1747 defined $str and $self->__parse($fields, $fflags, $str, 0)
1027 316 237 138 @keys == 1 and not defined $keys[0]
1029 316 9 228 @keys == 1 and ref $keys[0] eq "ARRAY"
1036 546 1 1 $self->{'_BOUND_COLUMNS'} and @keys != @{$self->{'_BOUND_COLUMNS'};}
1062 331 0 1 defined $args{'munge'} and not defined $args{'munge_column_names'}
1083 2 0 325 defined $hdr and $hdr ne ""
1113 144 0 0 $ebcdic and $enc eq "utf-ebcdic"
1131 0 314 1 $hdr and $hdr =~ s/\Asep=(\S)([\r\n]+)//i
1187 20 7 5 @refs == 1 and not defined $refs[0]
1192 24 2 1 $self->{'_COLUMN_NAMES'} and @refs != @{$self->{'_COLUMN_NAMES'};}
1210 2 1 2 @{$fr;} == 1 and !defined($fr->[0]) || $fr->[0] eq ''
1230 0 33 1 @f == 1 && !defined($f[0])
1252 1 19 38 defined $spec and $spec =~ /^ \s* \x23 ? \s* # optional leading # ( row | col | cell ) \s* = ( $qc # for row and col | $qd , $qd (?: - $qs , $qs)? # for cell (ranges) (?: ; $qd , $qd (?: - $qs , $qs)? )* # and cell (range) lists ) \s* $/xi
1274 3 27 2 $brr ne "*" and $brr == 0 || $brr < $tlr
2 26 2 $brc ne "*" and $brc == 0 || $brc < $tlc
1293 6 39 15 $brr ne "*" and $r > $brr
1303 6 17 10 $max_row ne "*" and $r == $max_row
1327 28 33 3 $r > $#r and $eod
1349 341 0 4 @_ == 1 && ref $_[0] eq 'HASH'
1392 305 36 1 exists $attr{'out'} && !$attr{'out'}
1397 0 302 40 $in and $out
302 28 12 $in and $out and !ref($in) || ref $in eq 'GLOB' || ref \$in eq 'GLOB'
28 12 0 $in and $out and !ref($in) || ref $in eq 'GLOB' || ref \$in eq 'GLOB' and !ref($out) || ref $out eq 'GLOB' || ref \$out eq 'GLOB'
1410 6 0 1 $cboi and not $cbai
1432 8 20 5 ref $out and 'ARRAY' eq ref $out || 'HASH' eq ref $out
8 7 13 ref $out and "SCALAR" ne ref $out
7 0 7 ref $out and "SCALAR" eq ref $out
7 0 7 ref $out and "SCALAR" eq ref $out and defined ${$out;}
0 5 2 ref $out and "SCALAR" eq ref $out and defined ${$out;} and ${$out;} eq "skip"
1469 16 2 0 not ref $in and $] < "5.008005"
1487 1010 1 6 exists $attr{$f} and not exists $attr{$t}
1492 0 2 0 defined $_[1][0] and $_[1][0] ne ""
1497 323 13 3 defined $fltr and not ref $fltr
336 0 3 defined $fltr and not ref $fltr and exists $fltr{$fltr}
1510 320 8 11 $kh and not ref $kh
328 3 8 $kh and not ref $kh and $kh =~ /^(?:1|yes|true|internal|auto)$/i
1541 1 345 0 @_ and ref $_[0] eq __PACKAGE__ || ref $_[0] eq 'Text::CSV'
1553 308 7 24 $c->{'out'} and not $c->{'sink'}
1555 6 14 4 not $hdrs and ref $c->{'kh'}
20 0 4 not $hdrs and ref $c->{'kh'} and $c->{'kh'} == \@internal_kh
1586 1 0 10 ref $hdrs || $hdrs eq 'auto' and @hdrs
1605 10 161 3 not defined $c->{'hd_s'} and $c->{'attr'}{'sep_char'}
1607 13 158 3 not defined $c->{'hd_s'} and $c->{'attr'}{'sep'}
1625 4 3 5 ref $key eq "ARRAY" and @{$key;} > 1
1631 2 1 2 ref $val eq "ARRAY" and @{$val;} > 0
1634 280 11 5 $c->{'fltr'} and grep /\D/, keys %{$$c{"fltr"};}
1640 0 0 52 $h && @$h
1663 214 0 10 $c->{'kh'} and $hdrs
1722 119 0 169 @row1 and not $c->{'hd_c'}
119 165 4 @row1 and not $c->{'hd_c'} and not ref $hdrs
1729 0 270 18 $ref and $c->{'cbai'} || $c->{'cboi'}
1742 5 0 2 $ro eq "SCALAR" and ${$c->{'out'};} eq "skip"
1749 0 0 4 @{$c->{'out'};} and @$ref
0 2 2 @{$c->{'out'};} and @$ref and ref $c->{'out'}[0] eq ref $ref->[0]
1798 687 220 5 defined $self->{'sep'} and $self->{'sep'} ne ""
1808 4 0 908 defined $quote_char and length $quote_char
1814 907 1 4 defined $self->{'quote'} and $self->{'quote'} ne ""
1824 6 2 904 defined $escape_char and length $escape_char
1836 804 61 42 $eol_len == 1 and $eol eq "\r"
804 4 57 $eol_len == 1 and $eol eq "\n"
752 5 51 $eol_len == 2 and $eol eq "\r\n"
1871 308 0 16 defined $cb->{'after_parse'} and ref $cb->{'after_parse'} eq "CODE"
1874 321 0 3 defined $cb->{'before_print'} and ref $cb->{'before_print'} eq "CODE"
1905 14 0 107 $bound and ref $bound eq "ARRAY"
1918 24547 2444 1231 $ctx->{'eol_type'} and $ctx->{'strict_eol'}
2444 202 1029 $ctx->{'eol_type'} and $ctx->{'strict_eol'} and not $ctx->{'eol'}
1921 28169 0 53 $ctx->{'sep_len'} and $ctx->{'sep_len'} > 1
28169 40 13 $ctx->{'sep_len'} and $ctx->{'sep_len'} > 1 and _is_valid_utf8($ctx->{'sep'})
1924 28194 0 28 $ctx->{'quo_len'} and $ctx->{'quo_len'} > 1
28194 28 0 $ctx->{'quo_len'} and $ctx->{'quo_len'} > 1 and _is_valid_utf8($ctx->{'quo'})
1928 28148 47 27 $ctx->{'strict'} and not $ctx->{'strict_n'}
28195 25 2 $ctx->{'strict'} and not $ctx->{'strict_n'} and $self->{'_COLUMN_NAMES'}
25 0 2 $ctx->{'strict'} and not $ctx->{'strict_n'} and $self->{'_COLUMN_NAMES'} and ref $self->{'_COLUMN_NAMES'} eq "ARRAY"
2002 6 77 4 $len == 1 && $value eq "\n"
6 2 75 $len == 1 && $value eq "\r"
4 0 4 $len == 2 && $value eq "\r\n"
2047 0 0 1 $cache->{'sep_len'} and $cache->{'sep_len'} > 1
2051 0 0 1 $cache->{'quo_len'} and $cache->{'quo_len'} > 1
2101 66 0 152 $cb and ref $cb eq "CODE"
2105 88 0 64 ref $res[0] eq "SCALAR" and ${$res[0];} eq "skip"
2124 0 2 21706 $esc ne "" and $esc ne "\0"
2134 21702 1 5 $n < 0 and $ctx->{'is_bound'}
2139 21706 0 2 $ctx->{'keep_meta_info'} >= 10 && @{[] unless $self->{'_FFLAGS'};} >= $n
2169 53933 6 10 substr($value, 0, 1) eq "=" and $ctx->{'formula'}
2179 1405 3 2 $check_meta and $self->is_quoted($i)
2188 52517 7 5 $check_meta and $self->is_quoted($i)
2190 5636 6 46887 not $must_be_quoted and $quot ne ""
2197 0 762 45168 $sep ne "" and $sep ne "\0"
762 44843 325 $sep ne "" and $sep ne "\0" and $value =~ /\Q$sep\E/
0 2 45603 $esc ne "" and $esc ne "\0"
2 45283 320 $esc ne "" and $esc ne "\0" and $value =~ /\Q$esc\E/
6 24955 20324 $ctx->{'quote_binary'} and $value =~ /[\x00-\x1f\x7f-\xa0]/
122 23602 1237 $ctx->{'quote_space'} and $value =~ /[\x09\x20]/
2200 52127 395 7 not $ctx->{'binary'} and $value =~ /[^\x09\x20-\x7E]/
2240 5 0 1 ref $column_names eq "ARRAY" and @$column_names >= $i - 1
2295 382 3518 5 $state and ($ctx->{'has_hooks'} || 0) & 2
2310 2849 0 231 $ctx->{'has_ahead'} and defined $self->{'_AHEAD'}
2332 8 32 20 $nf and not $ctx->{'strict_n'}
2335 0 35 25 $ctx->{'strict_n'} > 0 and $nf != $ctx->{'strict_n'}
2337 12 4 1 not $ctx->{'useIO'} and $ctx->{'has_ahead'}
2348 0 2901 171 defined $ctx->{'tmp'} and $ctx->{'used'} < $ctx->{'size'}
2901 77 94 defined $ctx->{'tmp'} and $ctx->{'used'} < $ctx->{'size'} and $ctx->{'has_ahead'}
2369 702 4317 2 $result and $ctx->{'types'}
2371 2 0 8 $i <= $len and $i <= $ctx->{'types_len'}
2391 22 4984 30 not $ctx->{'utf8'} and $ctx->{'sep_len'}
2392 22 4996 18 not $ctx->{'utf8'} and $ctx->{'quo_len'}
2393 22 3891 1123 not $ctx->{'utf8'} and $ctx->{'eol_len'}
2411 24133 51841 641 not $waitingForField and $c eq ""
75974 339 302 not $waitingForField and $c eq "" and $hit ne ""
52180 8 294 not $waitingForField and $c eq "" and $hit ne "" and $ctx->{'useIO'}
8 147 147 not $waitingForField and $c eq "" and $hit ne "" and $ctx->{'useIO'} and not $ctx->{'useIO'} & 16
2417 4693 44461 27314 $seenSomething and $hit eq ""
49154 26943 371 $seenSomething and $hit eq "" and $c eq ""
2437 0 29100 46993 defined $hit and $hit ne ""
2439 8397 2440 64 not $spl and $ctx->{'comment_str'}
2440 35 29 not $spl and $ctx->{'comment_str'} and $ctx->{'tmp'} =~ /\A\Q$ctx->{'comment_str'}\E/
2457 10 0 76789 defined $c and defined $sep
10 64241 12548 defined $c and defined $sep and $c eq $sep
10 0 64241 defined $c and defined $quot
10 139 64102 defined $c and defined $quot and $quot ne "\0"
139 40781 23321 defined $c and defined $quot and $quot ne "\0" and $c eq $quot
10 16 40904 defined $c and defined $esc
26 139 40765 defined $c and defined $esc and $esc ne "\0"
155 36110 4655 defined $c and defined $esc and $esc ne "\0" and $c eq $esc
10 36265 0 defined $c and $c eq "\n" || $c eq '' || defined $eol && $c eq $eol && $eol ne "\r"
10 32305 1258 defined $c and $c eq "\r"
32315 3 1255 defined $c and $c eq "\r" and not $ctx->{'verbatim'}
2470 1303 0 8 $ctx->{'keep_meta_info'} and $fflags
2503 0 1 0 defined $esc && $c2 eq $esc
89 0 1 $ctx->{'allow_loose_quotes'} and not defined $esc && $c2 eq $esc
2518 0 0 10813 defined $c2 and defined $sep
0 1724 9089 defined $c2 and defined $sep and $c2 eq $sep
2526 0 1542 182 defined $c2 and $c2 eq "\n" || defined $eol && $c2 eq $eol
2530 249 19 94 $ctx->{'strict_eol'} and $ctx->{'eol_type'}
19 67 27 $ctx->{'strict_eol'} and $ctx->{'eol_type'} and $ctx->{'eol_type'} != $eolt
2538 8 13 1341 defined $esc and $c eq $esc
2540 0 1290 51 defined $c2 and $c2 eq 0
2546 0 0 1290 defined $c2 and defined $quot
0 209 1081 defined $c2 and defined $quot and $c2 eq $quot
2555 204 0 5 $ctx->{'allow_loose_escapes'} and defined $c2
204 1 4 $ctx->{'allow_loose_escapes'} and defined $c2 and $c2 ne "\r"
2563 0 57 169 defined $c2 and $c2 eq "\r"
2572 5 27 137 defined $c3 and $c3 eq "\n"
2575 52 24 61 $ctx->{'strict_eol'} and $ctx->{'eol_type'}
24 40 21 $ctx->{'strict_eol'} and $ctx->{'eol_type'} and $ctx->{'eol_type'} != 3
2583 13 0 19 $ctx->{'useIO'} and not $ctx->{'eol_len'}
2587 2 4 2 $ctx->{'strict_eol'} and $ctx->{'eol_type'}
2607 5 4 2 $ctx->{'strict_eol'} and $ctx->{'eol_type'}
2626 45 2 10 $ctx->{'allow_loose_quotes'} and not $quoesc
2668 0 2 0 defined $quot and $c2 eq $quot
0 0 2 defined $sep and $c2 eq $sep
0 0 0 defined $esc and $c2 eq $esc
2694 0 2196 2411 defined $quot and $c2 eq $quot
0 2193 3 defined $sep and $c2 eq $sep
0 28 2165 defined $esc and $c2 eq $esc
2728 746 1768 775 ($c eq "\n" || $c eq "\r") && $c0 eq "\r"
2732 1731 232 541 $ctx->{'strict_eol'} and $ctx->{'eol_type'}
232 502 39 $ctx->{'strict_eol'} and $ctx->{'eol_type'} and $ctx->{'eol_type'} != $eolt
2737 2899 111 274 $fnum == 1 and $ctx->{'flag'} == 0
3010 117 157 $fnum == 1 and $ctx->{'flag'} == 0 and !$v_ref || $$v_ref eq ''
117 68 89 $fnum == 1 and $ctx->{'flag'} == 0 and !$v_ref || $$v_ref eq '' and $ctx->{'skip_empty_rows'}
2757 0 0 10 $cb and ref $cb eq "CODE"
2770 8 0 0 $ctx->{'is_bound'} and $ctx->{'is_bound'} < $n
2793 249 0 14 $ctx->{'keep_meta_info'} and $fflags
2816 6 2 2 $ctx->{'eol'} eq $c and $ctx->{'useIO'}
2821 1616 488 32 not $ctx->{'recno'} and $ctx->{'fld_idx'} == 1
2104 3 29 not $ctx->{'recno'} and $ctx->{'fld_idx'} == 1 and $ctx->{'useIO'}
3 25 4 not $ctx->{'recno'} and $ctx->{'fld_idx'} == 1 and $ctx->{'useIO'} and $hit =~ /^sep=(.{1,16})$/i
2858 71 8 11 $ctx->{'strict_eol'} and $ctx->{'eol_type'}
8 11 0 $ctx->{'strict_eol'} and $ctx->{'eol_type'} and $ctx->{'eol_type'} != 3
2866 5 0 16 $ctx->{'useIO'} and not $ctx->{'eol_len'}
2870 0 0 0 $ctx->{'strict_eol'} and $ctx->{'eol_type'}
2885 4 5 4 $ctx->{'strict_eol'} and $ctx->{'eol_type'}
2894 2 0 11 $fnum == 1 and $ctx->{'flag'} == 0
2 0 11 $fnum == 1 and $ctx->{'flag'} == 0 and !$v_ref || $$v_ref eq ''
0 5 6 $fnum == 1 and $ctx->{'flag'} == 0 and !$v_ref || $$v_ref eq '' and $ctx->{'skip_empty_rows'}
2914 0 0 0 $cb and ref $cb eq "CODE"
2927 0 0 0 $ctx->{'is_bound'} and $ctx->{'is_bound'} < $n
2969 5 29 251 defined $c2 and $c2 eq "\n"
2972 89 76 86 $ctx->{'strict_eol'} and $ctx->{'eol_type'}
76 76 10 $ctx->{'strict_eol'} and $ctx->{'eol_type'} and $ctx->{'eol_type'} != 3
2979 5 0 29 $ctx->{'useIO'} and not $ctx->{'eol_len'}
2988 11 8 4 $ctx->{'strict_eol'} and $ctx->{'eol_type'}
2997 23 0 0 $fnum == 1 and $ctx->{'flag'} == 0
23 0 0 $fnum == 1 and $ctx->{'flag'} == 0 and !$v_ref || $$v_ref eq ''
0 0 0 $fnum == 1 and $ctx->{'flag'} == 0 and !$v_ref || $$v_ref eq '' and $ctx->{'skip_empty_rows'}
3016 0 0 0 $cb and ref $cb eq "CODE"
3029 0 0 0 $ctx->{'is_bound'} and $ctx->{'is_bound'} < $n
3052 31570 748 0 $ctx->{'eolx'} and $c eq $eol
3058 443 193 18 not $spl and $ctx->{'comment_str'}
193 12 6 not $spl and $ctx->{'comment_str'} and $ctx->{'tmp'} =~ /\A$ctx->{'comment_str'}/
3067 284 123 241 $ctx->{'allow_whitespace'} and $self->__is_whitespace($ctx, $c)
3088 39 408 3 $ctx->{'useIO'} and not defined $c
3098 40889 9239 12 $ctx->{'useIO'} and $ctx->{'verbatim'}
9239 9 3 $ctx->{'useIO'} and $ctx->{'verbatim'} and $ctx->{'used'} == $ctx->{'size'}
3104 24 0 1 $ctx->{'has_ahead'} and $ctx->{'has_ahead'} == 214
3131 30 0 3 $ctx->{'keep_meta_info'} and $fflags
3145 0 0 0 $ctx->{'flag'} == 0 and $fnum == 1
0 0 0 $ctx->{'flag'} == 0 and $fnum == 1 and $ctx->{'skip_empty_rows'} == 1
3155 2849 1956 2183 defined $ctx->{'tmp'} and $ctx->{'used'} <= 0
3288 0 754 0 (!defined($ctx->{'sep'}) || $c ne $ctx->{'sep'}) && (!defined($ctx->{'quo'}) || $c ne $ctx->{'quo'}) && (!defined($ctx->{'escape_char'}) || $c ne $ctx->{'escape_char'}) && ($c eq ' ' || $c eq "\t")
3296 22055 0 134 $ctx->{'formula'} and defined $$v_ref
22055 107 27 $ctx->{'formula'} and defined $$v_ref and substr($$v_ref, 0, 1) eq "="
3301 21400 750 12 !defined($$v_ref) || $$v_ref eq '' and $ctx->{'empty_is_undef'} || !($flag & 1) && $ctx->{'blank_is_undef'}
3307 16391 4012 1747 $ctx->{'allow_whitespace'} and not $flag & 1
3310 18397 0 3753 $flag & 2 and $ctx->{'decode_utf8'}
0 1630 2123 $flag & 2 and $ctx->{'decode_utf8'} and $ctx->{'utf8'} || _is_valid_utf8($$v_ref)
3317 22074 0 88 $ctx->{'keep_meta_info'} and $fflags
3353 36 728 12 $n++ >= $tail and $tail
3366 617 44 52 defined $len and $n >= $len
661 20 32 defined $len and $n >= $len and $offset >= 0
3369 308 36 8 defined $len and $n > $len
3408 2 6 0 $self and (builtin::reftype($self) || '') eq 'HASH' || ref($self) =~ /^Text::CSV/

or 2 conditions

line l !l condition
329 921 95 shift() || {}
640 0 0 $self ||= "Text::CSV_PP"
678 7 0 $self ||= "Text::CSV_PP"
1323 28 27 $_ ||= 0
1354 44 300 delete $attr{'enc'} || delete $attr{'encoding'} || ''
1394 23 2 $out ||= \*STDOUT
1566 1 1 $hdrs ||= [map({$_ unless $hdr{$_};} keys %{$row;})]
1614 1 166 $hdrs ||= \@hdr
1620 3 7 $hdrs ||= "auto"
1626 7 13 $hdrs ||= "auto"
1634 2 3 $hdrs ||= "auto"
1954 21 11 $cache->{'eol_type'} || 0
2295 5 3518 $ctx->{'has_hooks'} || 0
3337 28 330 $offset ||= 0
3357 141 635 $ctx->{'has_hooks'} || 0

or 3 conditions

line l !l&&r !l&&!r condition
327 0 1024 1 ref $proto || $proto
704 1 1 9 not defined $v or $v eq ""
782 1 1 7 not defined $v or $v eq ""
793 1 1 6 not defined $v or $v eq ""
913 0 0 0 exists $hints->{'autodie'} and $hints->{'autodie'} or exists $hints->{'guard Fatal'} and not exists $hints->{'no Fatal'}
978 1 7 11 $idx < 0 or not ref $self->{'_FFLAGS'}
1210 0 2 0 $self->{'_FFLAGS'}[0] ||= CSV_FLAGS_IS_MISSING()
0 2 1 !defined($fr->[0]) || $fr->[0] eq ''
1232 0 11 0 $self->eol_type || $\ || $/
1274 2 2 32 $tlr == 0 or $tlc == 0
0 2 27 $brr == 0 || $brr < $tlr
4 2 30 $tlr == 0 or $tlc == 0 or $brr ne "*" and $brr == 0 || $brr < $tlr
0 2 26 $brc == 0 || $brc < $tlc
2 2 28 $tlr == 0 or $tlc == 0 or $brr ne "*" and $brr == 0 || $brr < $tlr or $brc ne "*" and $brc == 0 || $brc < $tlc
1282 2 17 9 $brr eq "*" or $brr > $max_row
1293 17 15 45 $r < $tlr or $brr ne "*" and $r > $brr
1294 33 3 9 not defined $lc or $tlc < $lc
1314 9 14 2 $to ||= $from
1317 2 1 22 $from <= 0 or $to < $from
1327 3 17 44 $r > $#r and $eod or $r[$r]
1336 27 99 279 $_ > $#r && $eod || $r[$_]
1366 2 15 326 delete $attr{'keep_headers'} || delete $attr{'keep_column_names'} || delete $attr{'kh'}
1371 2 2 332 delete $attr{'callbacks'}{'after_in'} || delete $attr{'after_in'} || delete $attr{'callbacks'}{'after_parse'} || delete $attr{'after_parse'}
1373 2 2 341 delete $attr{'callbacks'}{'before_out'} || delete $attr{'before_out'}
1375 4 12 329 delete $attr{'callbacks'}{'on_in'} || delete $attr{'on_in'}
1377 0 1 344 delete $attr{'callbacks'}{'on_error'} || delete $attr{'on_error'}
1380 4 6 335 delete $attr{'sep_set'} || delete $attr{'seps'}
1382 42 120 183 delete $attr{'detect_bom'} || delete $attr{'bom'}
1384 7 1 337 delete $attr{'munge'} || delete $attr{'munge_column_names'}
1390 339 3 3 delete $attr{'in'} || delete $attr{'file'}
1392 36 1 304 delete $attr{'out'} || delete $attr{'file'}
1394 3 22 317 ref $in eq "CODE" or ref $in eq "ARRAY"
1397 12 0 28 !ref($in) || ref $in eq 'GLOB' || ref \$in eq 'GLOB'
7 0 5 !ref($out) || ref $out eq 'GLOB' || ref \$out eq 'GLOB'
1399 2 0 5 ref $out or "GLOB" eq ref \$out
1432 4 1 20 'ARRAY' eq ref $out || 'HASH' eq ref $out
13 1 14 ref $out and "SCALAR" ne ref $out or "GLOB" eq ref \$out
1452 7 0 18 defined $attr{'eol'} or defined $fho
1459 3 21 317 ref $in eq "CODE" or ref $in eq "ARRAY"
16 2 269 ref $in or "GLOB" eq ref \$in
1480 339 0 0 $fh or $sink
1505 17 322 0 delete $attr{'csv'} || 'Text::CSV_PP'->new(\%attr)
1541 0 0 345 ref $_[0] eq __PACKAGE__ || ref $_[0] eq 'Text::CSV'
1557 1 9 11 @{$in;} == 0 or ref $in->[0] eq "ARRAY"
1586 5 5 1 ref $hdrs || $hdrs eq 'auto'
1602 10 156 149 defined $c->{'hd_s'} or defined $c->{'hd_b'}
166 6 143 defined $c->{'hd_s'} or defined $c->{'hd_b'} or defined $c->{'hd_m'}
162 2 141 defined $c->{'hd_s'} or defined $c->{'hd_b'} or defined $c->{'hd_m'} or defined $c->{'hd_c'}
1625 15 5 7 not ref $key or ref $key eq "ARRAY" and @{$key;} > 1
1631 3 2 3 not ref $val or ref $val eq "ARRAY" and @{$val;} > 0
1636 51 1 172 not ref $hdrs or ref $hdrs eq "CODE"
1645 0 3 0 $hdr{$_} || $_
1656 0 3 0 $hdr{$_} || $_
1660 0 3 0 $hdr{$_} || $_
1729 12 11 265 $c->{'cbai'} || $c->{'cboi'}
1771 2 267 4 $last_err ||= $csv->{'_ERROR_DIAG'}
1916 7 500 987 $ctx->{'verbatim'} || $ctx->{'eol_len'} >= 2
2121 1 1 21706 not defined $quot or $quot eq "\0"
2126 21505 199 0 $self->{'_re_comb_escape'}{$quot}{$esc} ||= qr/(\Q$quot\E|\Q$esc\E)/
2128 0 2 0 $self->{'_re_comb_escape'}{$quot}{$esc} ||= qr/(\Q$esc\E)/
2179 4 2 1408 $ctx->{'quote_empty'} or $check_meta and $self->is_quoted($i)
2197 957 325 45605 $value =~ /\Q$quot\E/ or $sep ne "" and $sep ne "\0" and $value =~ /\Q$sep\E/
325 320 45285 $value =~ /\Q$quot\E/ or $sep ne "" and $sep ne "\0" and $value =~ /\Q$sep\E/ or $esc ne "" and $esc ne "\0" and $value =~ /\Q$esc\E/
320 20324 24961 $value =~ /\Q$quot\E/ or $sep ne "" and $sep ne "\0" and $value =~ /\Q$sep\E/ or $esc ne "" and $esc ne "\0" and $value =~ /\Q$esc\E/ or $ctx->{'quote_binary'} and $value =~ /[\x00-\x1f\x7f-\xa0]/
20324 1242 23719 $value =~ /\Q$quot\E/ or $sep ne "" and $sep ne "\0" and $value =~ /\Q$sep\E/ or $esc ne "" and $esc ne "\0" and $value =~ /\Q$esc\E/ or $ctx->{'quote_binary'} and $value =~ /[\x00-\x1f\x7f-\xa0]/ or $ctx->{'quote_space'} and $value =~ /[\x09\x20]/
2298 3523 2 380 $state || !$last_error
2304 427 489 4116 $ctx->{'eolx'} or $ctx->{'eol_is_cr'}
2337 1 2 15 $last_error or not $ctx->{'useIO'} and $ctx->{'has_ahead'}
2457 2291 0 33974 $c eq "\n" || $c eq '' || defined $eol && $c eq $eol && $eol ne "\r"
2461 29 24 1258 $ctx->{'blank_is_undef'} or $ctx->{'empty_is_undef'}
2526 208 166 1350 $c2 eq "\n" || defined $eol && $c2 eq $eol
2668 0 2 0 defined $quot and $c2 eq $quot or defined $sep and $c2 eq $sep
2 0 0 defined $quot and $c2 eq $quot or defined $sep and $c2 eq $sep or defined $esc and $c2 eq $esc
0 0 0 defined $quot and $c2 eq $quot or defined $sep and $c2 eq $sep or defined $esc and $c2 eq $esc or $ctx->{'allow_loose_escapes'}
2694 2411 3 2193 defined $quot and $c2 eq $quot or defined $sep and $c2 eq $sep
3 2165 28 defined $quot and $c2 eq $quot or defined $sep and $c2 eq $sep or defined $esc and $c2 eq $esc
2165 0 28 defined $quot and $c2 eq $quot or defined $sep and $c2 eq $sep or defined $esc and $c2 eq $esc or $ctx->{'allow_loose_escapes'}
2737 0 157 117 !$v_ref || $$v_ref eq ''
2747 6 2 63 not defined $c or $ser == 2
2785 8 8 247 $ctx->{'blank_is_undef'} or $ctx->{'empty_is_undef'}
2894 0 11 0 !$v_ref || $$v_ref eq ''
2980 14 9 6 not $c2 =~ /[^\x09\x20-\x7E]/ or $c2 eq "\r"
2997 0 0 0 !$v_ref || $$v_ref eq ''
3078 0 3297 26178 not defined $c or $c =~ /[^\x09\x20-\x7E]/
3080 3282 10 5 $ctx->{'binary'} or $ctx->{'utf8'}
3087 5 445 1739 not defined $c or $c =~ /[^\x09\x20-\x7E]/
3090 438 0 9 $ctx->{'binary'} or $ctx->{'utf8'}
3123 5 4 24 $ctx->{'blank_is_undef'} or $ctx->{'empty_is_undef'}
3261 0 370 0 $line ||= (caller 1)[2]
3301 0 762 21400 !defined($$v_ref) || $$v_ref eq ''
12 0 750 $ctx->{'empty_is_undef'} || !($flag & 1) && $ctx->{'blank_is_undef'}
3310 75 2107 1571 $ctx->{'utf8'} || _is_valid_utf8($$v_ref)
3408 4 0 2 (builtin::reftype($self) || '') eq 'HASH' || ref($self) =~ /^Text::CSV/