in reply to creating a regular expression's alternation dynamically?

The first problem I spotted is that you're using [ and ] as you build the regexp, and putting alternation inside the square brackets. That doesn't work. In fact, all it really means is to accept any character in @list, plus accept the | character. Alternation is meaningless inside character classes.

For that section, you really want, "my $regex = join '|', @list;" (in other words, forget about the character class, unless of course you really do want a character class, in which case you'll forget about alternation).

You might also want to use the qr// operator. If you do it that way, here's a snippet for you to work with:

use strict; my( @list ) = <DATA>; chomp @list; my $buildup = join '|', @list; my $regexp = qr/$buildup/; my $s = huey'; print "match:\t$s\n" if $s =~ $regexp; __DATA__ huey dewey louie

Dave