/((msg|vacation.msg)|a(cation.msg|t(ation.msg|ition
.msg))|catation.msg|g|i(on.msg|tion.msg)|msg|n.msg|on.msg|sg|t(ation.
msg|i(on.msg|tion.msg))|vacation.msg)/
# first, rewrite it using the /x modifier:
/
(
(msg
|vacation.msg
)
|a
(cation.msg
|t
(ation.msg
|ition.msg
)
)
|catation.msg
|g
|i
(on.msg
|tion.msg
)
|msg
|n.msg
|on.msg
|sg
|t
(ation.msg
|i
(on.msg
|tion.msg
)
)
|vacation.msg
)/x
####
my @remove = qw(
msg
vacation.msg
acation.msg
atation.msg
atition.msg
catation.msg
g
ion.msg
ition.msg
msg
n.msg
on.msg
sg
tation.msg
tion.msg
tition.msg
vacation.msg
);
my $vacation_re = join "|", @remove;
$vacation_re = qr/$vacation_re/;
####
#!/usr/bin/perl -w
use strict;
my $good_re =
qr/((msg|vacation.msg)|a(cation.msg|t(ation.msg|ition.msg))|catation.msg|g|i(on.msg|tion.msg)|msg|
n.msg|on.msg|sg|t(ation.msg|i(on.msg|tion.msg))|vacation.msg)/;
my @remove = qw(
msg
vacation.msg
acation.msg
atation.msg
atition.msg
catation.msg
g
ion.msg
ition.msg
msg
n.msg
on.msg
sg
tation.msg
tion.msg
tition.msg
vacation.msg
);
my $new_re = join "|", @remove;
$new_re = qr/$new_re/;
while (my $line = ) {
chomp $line;
my ($good,$new) = ($line,$line);
$good =~ s/$good_re//;
$new =~ s/$new_re//;
if ($good ne $new) {
print "Error when testing '$line':\n";
print "Got '$new'\n";
print "Expected '$good'\n";
};
};
__DATA__
foo
bar
baz
vacation
vacation.msg
vaccatiion.mmssg