use strict; use warnings; my @arrays = ( [ qw{Sun Moon Venus Pluto Neptune} ], [ qw{Jupiter Mercury Moon Io} ], [ qw{Europa Moon Ganymede Sun Earth} ], [ qw{Venus Sun Saturn Titan} ], ); my $rxSunAndMoon = qr {(?x) (?:\bSun\b(?=.*\bMoon\b)) | (?:\bMoon\b(?=.*\bSun\b)) }; foreach my $raRocks ( @arrays ) { print qq{Array: @$raRocks\n}; print qq{@$raRocks} =~ $rxSunAndMoon ? qq{ Found Sun and Moon\n} : qq{ No match\n}; }