lexical means it is only available within that scope,
or in sub-scopes
{
my $a;
{
$a = 42;
}
}
$a # error
{
sub foo (){}
# my sub foo (){} # identical
{
foo();
}
}
foo() # error
---
Note that
sub foo (){}
is really short for
my only sub foo (){}
The `only` and the `my` are implied
---
For something to be attached to a namespace
it has to be declared as `our` or `has`.
module Foo {
constant Bar = 42;
# our constant Bar = 42; # identical
our sub foo (){64} # in the namespace
}
say Foo::Bar; # 42
say Baz::foo; # 64
class Baz {
method bar (){42}
# has method bar (){42} # identical
our sub foo (){64}
}
say Baz.bar; # 42
say Baz::foo; # 64
On Fri, Sep 14, 2018 at 6:15 AM Todd Chester <[email protected]> wrote:
>
> > On 14/09/2018 12:59, Todd Chester wrote:
> >> Hi All,
> >>
> >> I am in the process of converting a YUGE program I wrote in
> >> Perl 5 to Perl 6. I used "xx::yy" at lot for readability
> >> so I could tell where something came from.
> >>
> >> I take it "::" means something different is Perl 6 than Perl 5.
> >>
> >> $ p6 'use lib "/home/linuxutil"; use PrintColors;
> >> PrintColors::PrintRed "Hi\n";'
> >>
> >> Could not find symbol '&PrintRed'
> >> in block <unit> at -e line 1
> >>
> >> In p5 "PrintColors::PrintRed" means to use the routine called
> >> "PrintRed" found in a modules called "PrintColors".
> >>
> >> Does p6 have an equivalent?
> >>
> >> Many thanks,
> >> -T
>
> On 09/14/2018 04:01 AM, Timo Paulssen wrote:
> > It's important for the PrintRed sub inside PrintColors to be declared
> > "our", otherwise it is "my" scoped, i.e. limited to the lexical extent
> > of the module file.
> >
>
> sub PrintRed ( $Str ) is export { print color('bold'), color('red'),
> "$Str", color('reset'); }
>
> I have never understood the use of "our" in a module.
> I can't tell the difference.
>
> Also, did you answer my question about "::" and did it
> just go over my head?
>
> The p5 guys use to tell me "its lexiconical", meaning it was figured
> out on the fly. (Took me forever to catch on.) Is that any
> relation to your use of the word "lexical"?
>
> https://www.dictionary.com/browse/lexical?s=t
>
> adjective
>
> of or relating to the words or vocabulary of a language,
> especially as distinguished from its grammatical and
> syntactical aspects.
>
> of, relating to, or of the nature of a lexicon.
>
> -T