in reply to Preventing duplicate info from being pushed into an array

You could use something like
my @Book = (); my @MatchFound = (); my %seen; foreach (@Book) { if ( /\bPerl\b/i && /\bMonks\b/i && /\bRule\b/i ) { push @MatchFound, $_ unless $seen{$_}++; } }

Most often, when you're after a unique list in Perl, you want to use a hash