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