The subroutine I wrote defines a named parameter that goes by the name alignment 'Int :$alignment'. If the caller wants to call the callee using the given named parameter there are several ways to so do .... hence the ':alignment(4)'.
If instead you have a variable already defined you can instead pass that variable as a named parameter via something like the following: $alignment = 4; sbprint 0x04F842, :$alignment; The documentation goes into much more detail about named arguments. https://docs.raku.org/language/functions#Arguments On Thu, Feb 6, 2020 at 11:43 AM ToddAndMargo via perl6-users < perl6-us...@perl.org> wrote: > On 2020-02-05 20:12, Paul Procacci wrote: > > I wasn't going to follow up but decided to do so since there is a small > > but subtle bug in my original post. > > I wouldn't want to mislead you Todd. > > > > The \d has been changed to [0..9] as the expected input would only ever > > be in that range. (\d includes Unicode Characters) > > I've also included an alignment parameter (shadow'ing the sub written by > > you Todd). > > > > sub sbprint( Int $n, Int :$alignment = 8) { > > my Int $padding = $alignment + $n.msb - ( $n.msb +& ( > > $alignment - 1 ) ); > > '0b' ~ "\%0{$padding}b".sprintf($n).comb(/<[0..9]> ** { > > $alignment }/).join('_') > > } > > > > say sbprint 0x04F842; > > say sbprint 0x04F842, :alignment(4); > > > > # ./test.pl6 > > 0b00000100_11111000_01000010 > > 0b0100_1111_1000_0100_0010 > > > `Int :$alignment = 8` was inspired! > > What does the ":" do before `alignment`? > -- __________________ :(){ :|:& };: