[sf-perl] qr{} question

David Alban extasia at extasia.org
Tue May 26 11:52:20 PDT 2009


greetings,

i'm trying to interpolate a value in a compiled regex.  it's
interpolating the first time, but not the second.  that is:

    #!/usr/bin/perl

    use strict;
    use warnings;

    use Data::Dumper;
    use Readonly;

    Readonly my $FOO => 'foo';
    Readonly my $FOO_REGEX => qr{ $FOO [^#]+ -D $FOO }xms;

    print "\nReadonly:\n";
    print '$FOO:       ', Dumper $FOO;
    print '$FOO_REGEX: ', Dumper $FOO_REGEX;

    my $BAR = 'bar';
    my $BAR_REGEX = qr{ $BAR [^#]+ -D $BAR }xms;

    print "\nNOT Readonly:\n";
    print '$BAR:       ', Dumper $BAR;
    print '$BAR_REGEX: ', Dumper $BAR_REGEX;

prints:

    Readonly:
    $FOO:       $VAR1 = 'foo';
    $FOO_REGEX: $VAR1 = qr/(?msx-i: foo [^#]+ -D $FOO
    )/;

    NOT Readonly:
    $BAR:       $VAR1 = 'bar';
    $BAR_REGEX: $VAR1 = qr/(?msx-i: bar [^#]+ -D $BAR
    )/;


i added the 'NOT Readonly' section 'cause i thought maybe that had
something to do with using Readonly.  appears not to.  what am i
missing.  why does it interpolate the first occurrence of the
variable, but not the second?  i readlly don't wan't to hardcode the
variable in the regex.

thanks,
david
-- 
Live in a world of your own, but always welcome visitors.


More information about the SanFrancisco-pm mailing list