Function: cperl-after-sub-regexp
cperl-after-sub-regexp is a byte-compiled function defined in
cperl-mode.el.gz.
Signature
(cperl-after-sub-regexp NAMED ATTR)
Documentation
Match the text after sub in a subroutine declaration.
If NAMED is nil, allows anonymous subroutines. Matches up to the first ":" of attributes (if present), or end of the name or prototype (whatever is the last).
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/cperl-mode.el.gz
;; Is incorporated in `cperl-outline-regexp', `defun-prompt-regexp'.
;; Details of groups in this may be used in several functions; see comments
;; near mentioned above variable(s)...
;; sub($$):lvalue{} sub:lvalue{} Both allowed...
(defsubst cperl-after-sub-regexp (named attr) ; 9 groups without attr...
"Match the text after `sub' in a subroutine declaration.
If NAMED is nil, allows anonymous subroutines. Matches up to the first \":\"
of attributes (if present), or end of the name or prototype (whatever is
the last)."
(concat ; Assume n groups before this...
"\\(" ; n+1=name-group
cperl-white-and-comment-rex ; n+2=pre-name
(rx-to-string `(group ,cperl--normal-identifier-rx))
"\\)" ; END n+1=name-group
(if named "" "?")
"\\(" ; n+4=proto-group
cperl-maybe-white-and-comment-rex ; n+5=pre-proto
"\\(([^()]*)\\)" ; n+6=prototype
"\\)?" ; END n+4=proto-group
"\\(" ; n+7=attr-group
cperl-maybe-white-and-comment-rex ; n+8=pre-attr
"\\(" ; n+9=start-attr
":"
(if attr (concat
"\\("
cperl-maybe-white-and-comment-rex ; whitespace-comments
"\\(\\sw\\|_\\)+" ; attr-name
;; attr-arg (1 level of internal parens allowed!)
"\\((\\(\\\\.\\|[^\\()]\\|([^\\()]*)\\)*)\\)?"
"\\(" ; optional : (XXX allows trailing???)
cperl-maybe-white-and-comment-rex ; whitespace-comments
":\\)?"
"\\)+")
"[^:]")
"\\)"
"\\)?" ; END n+6=proto-group
))