in reply to Searching Line by Line Multiple Times

I certainly don't disagree with the previous replies -- they are all true -- but my suggestions are a little different... Instead of this (which is considered harmful):
open(SuitDoc,<STDIN>) || die "Cannot open file"; ... while ($line = <SuitDoc>) { ...
you should just go with the standard idiom:
while (<>) { # read from file name(s) in @ARGV or from pipe ...
Apart from that, you've got your nesting the wrong way around. The outer loop should be over the lines that you read from your input stream, and the inner loop (applied to each line) should be over your patterns. But actually, you don't need an inner loop -- you can let the regex do most of the work:
use strict; # get into this habit my $suits = 'hearts|clubs|spades|diamonds'; while (<>) { if ( /($suits)/ ) { print $1; } }