Course of Raku / Advanced / Containers / Special and dynamic variables 🆕

Twigils

A twigil is a character placed between the sigil and the name of a variable. It does not change the name; it changes how the variable behaves and is resolved. The common ones are:

  • * — a dynamic variable, e.g. $*OUT, looked up through the call stack
  • ? — a compile-time value provided by the compiler, e.g. $?FILE, $?LINE
  • ! — a private attribute of an object, e.g. $!balance
  • . — an attribute reached through its accessor method, e.g. $.name

You have already met several of these without naming the twigil: $*OUT and $*IN (dynamic), and $!/$. in the part on objects.

The compiler-provided ? variables are filled in as your program is compiled:

say $?LINE; # the line number of this statement
say $?FILE; # the path of this source file

Each twigil signals a different kind of variable at a glance, so reading $*foo you immediately know it is dynamic, and $?foo that it is a compile-time constant. The next topic looks at dynamic variables in detail, since they behave quite differently from the lexical variables you have used so far.

Practice

Complete the 1 quiz that covers the contents of this topic.

Course navigation

Special and dynamic variables 🆕   |   Quiz — Twigils


💪 Or jump directly to the exercises in this section.