[sf-perl] problem use Regexp::Common, "Can't Regexp::Common::FIRSTKEY"...
Quinn Weaver
quinn at pgexperts.com
Fri Mar 1 10:55:29 PST 2013
I don't have a full answer, but the immediate problem you're seeing is that the regex is a tied hash and one of the magic hash methods (FIRSTKEY) is not implemented. Why that bothers the debugger I don't know.
If you want to read the underlying regular expression, try 'perldoc -l Regexp::Common' (using the same Perl as your program uses, of course), then chop the .pm off the result and look in that directory for time.pm or american.pm.
Be warned: this may not help. Some regexes in Regexp::Common (e.g., profanity.pm) are so optimized that they look more like a series of letters and |'s than a regex you or I would write. If you find the Common regex unreadable, you might be better off writing your own after all.
Good luck! Hope that helps a little.
Regards,
--
Quinn Weaver
PostgreSQL Experts, Inc. http://pgexperts.com/
1-888-743-9778 (my extension: 510)
Sent from my phone; pardon my brevity.
On Mar 1, 2013, at 7:39 AM, George Hartzell <hartzell at alerce.com> wrote:
>
> I'm trying to be a good boy and reuse regular expressions from the
> Regexp::Common world (ultimately $RE{time}{american}). I have things
> working, but as I was playing around in the debugger I discovered
> something "funny".
>
> It seems that any time I try to touch %RE I get an error, sometimes
> things Go Badly enough that I end up back at my shell prompt.
>
> It blows up with pretty much the same message in 5.14.2, 5.14.3 and
> 5.16.2 on a current Mac OS X system.
>
> (alacrity)[17:26:03]~>>perl -d -e ''
>
> Loading DB routines from perl5db.pl version 1.33
> Editor support available.
>
> Enter h or `h h' for help, or `man perldebug' for more help.
>
> Debugged program terminated. Use q to quit or R to restart,
> use o inhibit_exit to avoid stopping after program termination,
> h q, h R or h o to get additional info.
> DB<1> use strict
>
> DB<2> use warnings
>
> DB<3> use Regexp::Common qw(number)
>
> DB<4> x $RE{num}{int}
> 0 Regexp::Common=HASH(0x7fad2c02d828)
> Can't Regexp::Common::FIRSTKEY at /Users/hartzell/perl5/perlbrew/perls/perl-5.14.3/lib/5.14.3/dumpvar.pl line 205
> END failed--call queue aborted.
> at -e line 0
>
> This doesn't seem to keep my code from working but it smells funny....
>
> Can anyone shed any light on what's going on?
>
> g.
> _______________________________________________
> SanFrancisco-pm mailing list
> SanFrancisco-pm at pm.org
> http://mail.pm.org/mailman/listinfo/sanfrancisco-pm
More information about the SanFrancisco-pm
mailing list