No, see S06-routines.pod:

    As with module and class declarations, a sub declared
    with the C<unit> declarator (and ending in semicolon) is allowed at the
outermost
    file scope if it is the
    first such declaration, in which case the rest of the file is the body:

        unit sub MAIN ($directory, :$verbose, *%other, *@filenames);
        for @filenames { ... }

    This form is allowed only for simple subs named C<MAIN> that are
intended
    to be run from the command line.


On Sat, Mar 26, 2016 at 7:02 AM Elizabeth Mattijsen via RT <
perl6-bugs-follo...@perl.org> wrote:

> unit sub ???
>
> I thought that unit was only supposed to be followed by a package like
> declaration??
>
>
> > On 26 Mar 2016, at 02:10, Trey Harris (via RT) <
> perl6-bugs-follo...@perl.org> wrote:
> >
> > # New Ticket Created by  Trey Harris
> > # Please include the string:  [perl #127785]
> > # in the subject line of all future correspondence about this issue.
> > # <URL: https://rt.perl.org/Ticket/Display.html?id=127785 >
> >
> >
> > Example:
> >
> > % perl6 -e 'sub MAIN ($x where { $^x > 1 } ) { say "big" }' 4
> > big
> > % perl6 -e 'sub MAIN ($x where { $^x > 1 } ) { say "big" }' 0
> > Usage:
> >  -e '...' <x>
> > % perl6 -e 'unit sub MAIN ($x where { $^x > 1 } );  say "big"'  4
> > ===SORRY!===
> > Expression needs parens to avoid gobbling block
> > at -e:1
> > ------> unit sub MAIN ($x where { $^x > 1 }⏏ );  say "big"
> > Missing block (apparently claimed by expression)
> > at -e:1
> > ------> unit sub MAIN ($x where { $^x > 1 } );⏏  say "big"
> >
>
>
>

Reply via email to