From: Alok Bhatt <[EMAIL PROTECTED]>
> --- Jason Dusek <[EMAIL PROTECTED]> wrote:
> > Hi List,
> > But if I have a long list of suffixes, then I would
> > like to store the 
> > suffixes in an array, and then evaluate the array in
> > my regular 
> > expression. What does this? I've tried:
> > 
> >    @SUFF = (fish,foul);
> >    foreach (@ARGV) {
> >      print if (/\.(@SUFFIXES)$/);
> >    }
> > 
> > and also:
> > 
> >    @SUFF = (fish,foul);
> >    foreach (@ARGV) {
> >      print if (/\.(@[EMAIL PROTECTED])$/);
> >    }
> Hi, 
> try this
> my @suffix=(txt, jpg, tif);
> my $pattern= join "|", @suffix;
> 
> foreach (@ARGV) {
>       print if /\.$pattern$/;
> }

This would match even   foo.notatif, you have to add braces into the 
regexp.

        print if /\.(?:$pattern)$/;

(The ?: makes the braces non-capturing. See perldoc perlre)

You will also either want to use the /o option to compile the regexp 
just once or use the qr// operator:

my $pattern= join "|", @suffix;
foreach (@ARGV) {
    print if /\.$pattern$/o;
}

or

my $pattern = join "|", @suffix;
$pattern = qr/\.$pattern$/; # compile the regexp
foreach (@ARGV) {
    print if $_ =~ $pattern;
}

HTH, Jenda
===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz =====
When it comes to wine, women and song, wizards are allowed 
to get drunk and croon as much as they like.
        -- Terry Pratchett in Sourcery


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to