in reply to Match function not providing results

chriso,

I must admit that I haven't read your code fully, but I'm not sure your regexp is correct. This:

param('s1') =~ m/ad/i
will match any string which contains an 'a' and a 'd' right next to each other, e.g. 'add', 'dad', etc. I'm not sure if that's what you want to do...

If you want to match a string which contains an 'a' and a 'd' anywhere in the string, e.g. 'and' or 'drag', then here's an easy way:

param('s1') =~ /a/i and param('s1') =~ /d/i
Hope that helps,
andy.

Update: if you want one or the other, then you could do

param('s1') =~ /a/i or param('s1') =~ /d/i
or, as Corion suggests, you could use a character class.

If you have a list of characters that you want to match any of, then you could do it like this:

my @list = qw(a b c); if (param('s1) =~ /[@list]/xi) { print "one of the characters matched" }
where the /x at the end of the regexp makes it ignore white space (because @list will expand like this: 'a b c').

andy.