sub getline { return unless @_; # caller don't want checks my %valid_word= map { ( $_, 1) } @_; # create a hash valid_word => 1 my $line; chomp( $line = <>); my @word= split /\s/, $line; foreach my $word (@word) { return undef unless $valid_word{$word}; } # return failure as soon as a a bad word is found return $line; }