$ cat test.pl use 5.20.0; use warnings; use List::Util qw(first); use Text::CSV_XS qw(csv); csv (in => *DATA, filter => { 2 => sub { (first { $_[1][0] + $_ == $_[1][1] && $_[1][1] + $_ == $_[1][2] } 1 .. 3) ? 0 : 1 }}); __END__ 0,1,3,4,5,# +1 +2 keep 1,2,3,4,5,# +1 +1 skip 1,3,1,4,5,# +2 -2 keep 1,3,5,4,5,# +2 +2 skip 2,2,3,3,4,# 0 0 keep 0,3,6,4,5,# +3 +3 skip 1,0,0,4,5,# -1 0 keep 0,4,8,4,5,# +4 +4 keep weird python 0,5,10,,5,# +5 +5 keep $ #### $ perl test.pl 0,1,3,4,5,"# +1 +2 keep" 1,3,1,4,5,"# +2 -2 keep" 2,2,3,3,4,"# 0 0 keep" 1,0,0,4,5,"# -1 0 keep" 0,4,8,4,5,"# +4 +4 keep weird pyhton" 0,5,10,,5,"# +5 +5 keep" $