unless ( (!($args =~ /\-rs(\s+)(\S+)/)) && (!($args =~ /\-p(\s+)(\S+)/)) && (!($args =~ /\-P(\s+)(\S+)/)) ) {..... # I figure this is easier to understand: unless ( $args =~ /\-rs(\s+)(\S+)/ or $args =~ /\-p(\s+)(\S+)/ or $args =~ /\-P(\s+)(\S+)/ ) {.... #### c:\@Work\Perl\monks>perl -wMstrict -le "for my $s (qw(p X)) { printf qq{for '$s' case }; unless ( (!($s =~ /p/)) && (!($s =~ /q/)) && (!($s =~ /r/)) ) { print 'A' } unless ( $s =~ /p/ or $s =~ /q/ or $s =~ /r/ ) { print 'B' } } " for 'p' case A for 'X' case B