in reply to Strange grep and matching behaviour...

Try something like :
#!/usr/bin/perl use warnings; use strict; open FH, "testit" or die $!; my @lines = <FH>; for (@lines) { print $_ if (!/fubar/) ; }
Though I don't see why your grep example didn't work. (my @nonfubar = grep !/fubar/, @lines;)