Question

Is there something I can't do without the '@'-sigil when working with user-defined variables?

#!perl6
use v6;

my $list = <a b c d e f>;
my @list = <a b c d e f>;

$list.list.perl.say;
@list.perl.say; 

$list[2..4].say;
@list[2..4].say;

$list.elems.say;
@list.elems.say;

$list.end.say;
@list.end.say;

say 'OK' if $list ~~ /^c$/;
say 'OK' if @list ~~ /^c$/;
Was it helpful?

Solution

Yes, variadic parameters require the @ sigil:

sub SHOUT(*@a) {
      print @a>>.uc;
}

Though that's cheating your question, because @a is now a formal parameter, not just a variable. For actual variables only, scalars can do everything you need, though often with more effort than if you use the appropriate sigil.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top