Provided by: libxs-parse-sublike-perl_0.20-1ubuntu3_amd64 bug

NAME

       "Sublike::Extended" - enable extended features when parsing "sub"-like syntax

SYNOPSIS

          use v5.26;
          use Sublike::Extended;
          use experimental 'signatures';

          extended sub greet (:$name = "world") {
             say "Hello, $name";
          }

          greet( name => $ENV{USER} );

DESCRIPTION

       This module extends the syntax for declaring named or anonymous subroutines using Perl's
       builtin "sub" keyword, or other similar keywords provided by third-party modules, to
       enable parsing of extra features.

       Currently, the only extended features that are provided are related to the parsing of a
       subroutine signature. Since signatures are only available on Perl version 5.26 or later,
       this module is unlikely to be useful in earlier versions of Perl.

   Named parameters
       Extended subroutines can be declare named parameters in the signature, after any
       positional ones. These take the form of a name prefixed by a colon character. The caller
       of such a function should pass values for these parameters by the usual name-value pair
       syntax that would be used for passing into a regular hash. Within the body of the
       subroutine the values passed into these are unpacked into regular lexical variables.

          extended sub colour (:$red, :$green, :$blue) {
             ... # $red, $green and $blue are available as regular lexicals
          }

          # argument order at the caller site is not important
          colour(green => 1, blue => 2, red => 3);

       As with positional parameters, they are normally mandatory, but can be made optional by
       supplying a defaulting expression. If the caller fails to pass a value corresponding to
       the parameter, the default expression is evaluated and used instead.

          extended sub f (:$x0, :$x1, :$x2 = 0) { ... }
          # The caller must provide x0 and x1, but x2 is optional

       An optional slurpy hash is also permitted after all of these. It will contain the values
       of any other name-value pairs given by the caller, after those corresponding to named
       parameters have already been extracted.

          extended sub g (:$alpha, :$beta, %rest) { ... }

   Parameter Attributes
       Parameters to extended subroutines can use attribute syntax to apply extra attributes to
       individual parameters.

          extended sub info ($x :Attribute) { ... }

       Any attributes that are available are ones that have been previously registered with
       XS::Parse::Sublike using its XS-level API. The particular behaviour of such an attribute
       would be defined by whatever module provided the attribute.

KEYWORDS

   extended
          extended sub NAME (SIGNATURE...) { BODY... }

          extended sub (SIGNATURE...) { BODY... };

       This prefix keyword enables extra parsing features when handling a "sub" (or other sub-
       like function keyword).

       This keyword can be freely mixed with other "sub"-prefix keywords, such as "async" from
       Future::AsyncAwait

          async extended sub f (:$param) { ... }

       This can also be used with other keywords that provide "sub"-like syntax, such as "method"
       from Object::Pad or the core "use feature 'class'".

          extended method f (:$param) { ... }

AUTHOR

       Paul Evans <leonerd@leonerd.org.uk>