in reply to creating regular expressions dynamically from the command line

The posted code is building a string, and hence since a non-empty string tests true, your code will always output. Since you want to join your regular expressions with an 'and', the simplest implementation (IMHO) would be using Perl to handle the conditional logic. What you've written so far would be most naturally converted to an eval, but it seems more logical to simply use the qr// delimiter (see Regexp Quote Like Operators in perlop) to stash them all in an array, and then track test success with a flag, perhaps like:

#!/usr/bin/perl use strict; use warnings; # build regular expression from command line args my @res; foreach my $arg (@ARGV) { push @res, qr/$arg/; } while (<STDIN>){ my $fail = 0; foreach my $re (@res) { $fail ||= $_ !~ $re; } print unless $fail; }