in reply to Making a hash of regexes

qr creates a Regexp reference. You can't use references as hash keys unless you tie the hash using Tie::RefHash. That may not be your problem here but you'll need to fix that.

Replies are listed 'Best First'.
Re: Re: Making a hash of regexes
by abell (Chaplain) on Nov 26, 2002 at 08:45 UTC
    Actually, from man perlop:
    qr/STRING/imosx
       This operator quotes (and possibly compiles) its
       STRING as a regular expression.  STRING is inter­
       polated the same way as PATTERN in "m/PATTERN/".
       If "'" is used as the delimiter, no interpolation
       is done.  Returns a Perl value which may be used
       instead of the corresponding "/STRING/imosx"
       expression.
    
    A little experiment:
    use strict my %a = (qr/(.+)pippo/, 1); print keys %a;
    prints out (?-xism:(.+)pippo), which can be used in the matching part of a regex, while
    use strict; my %a = (1,2); my %b = (\%a, 3); for (keys %b) { print %$_ };
    dies with error
    Can't use string ("HASH(0x81005ac)") as a HASH ref while "strict refs" in use at - line 5.

    The stupider the astronaut, the easier it is to win the trip to Vega - A. Tucket
Re: Re: Making a hash of regexes
by jpfarmer (Pilgrim) on Nov 26, 2002 at 01:13 UTC
    Ok, I'm confused. I made the corrections and it works fine now, with no errors even using the strict and warning pragmas. Shouldn't it fail to work?
Re: Re: Making a hash of regexes
by BrowserUk (Patriarch) on Nov 26, 2002 at 01:19 UTC

    qr creates a Regexp reference.

    I've never heard of a regex reference? Could you give me a pointer to the docs on that?


    Okay you lot, get your wings on the left, halos on the right. It's one size fits all, and "No!", you can't have a different color.
    Pick up your cloud down the end and "Yes" if you get allocated a grey one they are a bit damp under foot, but someone has to get them.
    Get used to the wings fast cos its an 8 hour day...unless the Govenor calls for a cyclone or hurricane, in which case 16 hour shifts are mandatory.
    Just be grateful that you arrived just as the tornado season finished. Them buggers are real work.