my %sigils = bang => '!', at => '@', hash => '#', dollar => '$', percent => '%', caret => '^', and => '&', star => '*', zero => '0'; my regex line { ^^ :my $s; (\w+) \h+ $s (\N*) $s $$ { make ~$0 => ~$1 } } sub parse($_) { map *..made, m:g// } say parse "star *foo*\nat @bar\nat @baz@";