if (m/\G menu \s* \( \s* $RXstr \s* \) \s* \{/oxgc) {
my $name = $1;
parse_menu($name);
}
elsif (m/\G driver \s* \( \s* $RXstr \s* \)/oxgc) {
my $name = $1;
parse_driver($name);
}
####
our $RXname = qr/ [a-zA-Z0-9_\-:.\[\]<>;]+ /x;
our $RXhex = qr/ (?: 0 [xX] [0-9A-Fa-f]+ ) /x;
our $RXoct = qr/ 0 [0-7]* /x;
our $RXuint = qr/ [0-9]+ /x;
our $RXint = qr/ -? $RXuint /ox;
our $RXuintx = qr/ ( $RXhex | $RXoct | $RXuint ) /ox;
our $RXintx = qr/ ( $RXhex | $RXoct | $RXint ) /ox;
our $RXnum = qr/ -? (?: [0-9]+ | [0-9]* \. [0-9]+ ) (?: [eE] [-+]? [0-9]+ )? /x;
our $RXdqs = qr/ " (?: [^"] | \\" )* " /x;
our $RXstr = qr/ ( $RXname | $RXnum | $RXdqs ) /ox;
####
woz$ perlbrew use 5.18.0
woz$ time perl -CSD registerRecordDeviceDriver.pl softIoc.dbd
real 0m0.461s
user 0m0.380s
sys 0m0.020s
woz$ perlbrew use 5.20.0
woz$ time perl -CSD registerRecordDeviceDriver.pl softIoc.dbd
real 0m14.656s
user 0m13.548s
sys 0m0.075s
woz$ perlbrew use 5.24.1
woz$ time perl -CSD registerRecordDeviceDriver.pl softIoc.dbd
real 0m9.518s
user 0m8.977s
sys 0m0.044s