trait is dynamic

Documentation for trait is dynamic assembled from the following types:

class Variable

From Variable

(Variable) trait is dynamic

multi sub trait_mod:<is>(Variable:D:$dynamic)

Marks a variable as dynamic, that is, accessible from inner dynamic scopes without being in an inner lexical scope.

sub introspect() {
    say $CALLER::x;
}
my $x is dynamic = 23;
introspect;         # OUTPUT: «23␤»
{
    # not dynamic
    my $x;
    introspect()    # dies with an exception of type X::Caller::NotDynamic
}

The is dynamic trait is a rather cumbersome way of creating and accessing dynamic variables. A much easier way is to use the * twigil:

sub introspect() {
    say $*x;
}
my $*x = 23;
introspect;         # OUTPUT: «23␤»
{
    # not dynamic
    my $x;
    introspect()    # dies with an exception of type X::Dynamic::NotFound
}