[Mimedefang] string compare / matching

Joseph Brennan brennan at columbia.edu
Fri Nov 30 12:16:07 EST 2007

Petra Humann <humann at tcs.inf.tu-dresden.de> wrote:

>     my $absender = $Sender;
>     $absender =~ s/^<//;
>     $absender =~ s/>$//;
>     $absender = lc($absender);
> If I write:
> 	if ( ! grep /$absender/, $from_header) ...
> it works, but some addresses doesn't, like "liste**recipient**@liste.com".

Beware of putting an email address into a regexp.  Perl will try to
interpret characters like * as quantifiers and complain.  Consider:

$thing  = 'liste**recipient**@liste.com';
$string = '**recip';
if ( grep /$string/, $thing) {
    print "matched\n";

$ perl -w test.pl
Quantifier follows nothing before HERE mark in regex ...

You can use \Q and \E to get around this:
    if ( grep /\Q$string\E/, $thing)

Joseph Brennan
Columbia University Information Technology

More information about the MIMEDefang mailing list