Еще одно предложение. В зависимости от того, как долго ваш список регулярных выражений вам нужно сопоставить в одном if, и как часто вам нужно делать такие добрые вещи, было бы разумно превратить это в подпрограмму.
Вдохновленный каждым Рубином:
sub matchesAll ($@) {
my $string = shift;
my $result = 1;
foreach $_ (@_) {
$result &&= $string =~ $_;
}
$result;
}
А потом сделай
if (matchesAll $data, $regex1, $regex2, $regex3, $regex4) ...
Примечание: для этого необходимо, чтобы все регулярные выражения были скомпилированы для будущего использования с использованием qr // $regex1 = qr/regex1/