in reply to Regexp do's and don'ts
I used to (before use strict) compose regexps by hiding the components inside an if, e.g.:
Nowadays, I use strict and eval, e.g.$complex_re = /^($ip) ($host) ($msg)$/ if ( $ip = /\d+\.\d+\.\d+\.\d+/, $host = /[\-\.\w]+/, $msg = /.*/ );
We pay about a 5% penalty for the eval when we use this in a tight loop, however we can solve that by moving the regexp creation outside the loop.my $complex_re = eval { my $ip = qr/\d+\.\d+\.\d+\.\d+/; my $host = qr/[\-\.\w]+/; my $msg = qr/.*/; return /^($ip) ($host) ($msg)$/; );
PatrickRate with eval without eval with eval 116279/s -- -5% without eval 121951/s 5% --
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Regexp Legibility
by ambrus (Abbot) on Jun 14, 2009 at 14:44 UTC | |
by patrickhaller (Initiate) on Jun 21, 2009 at 16:33 UTC | |
by linuxer (Curate) on Jun 21, 2009 at 16:47 UTC | |
by Anonymous Monk on Jun 21, 2009 at 16:45 UTC |
In Section
Meditations