#!/usr/bin/env perl6 use v6; class Term::Choose { has Str $.prompt = 'Your Choice'; has Int @.mark; has %!backup_opt; # ... method choose ( Array $orig_list, %opt? ) { for %opt.keys -> $key { when $key eq 'prompt' { %!backup_opt{$key} = $!prompt; $!prompt = %opt{$key}; } when $key eq 'mark' { %!backup_opt{$key} = [ @!mark ]; @!mark = |%opt{$key}; } } say "prompt: $!prompt"; say "mark : @!mark[]\n"; self!rest_attributes(); } method !rest_attributes { for %!backup_opt.keys -> $key { when $key eq 'prompt' { $!prompt = %!backup_opt{$key} } when $key eq 'mark' { @!mark = |%!backup_opt{$key} } } } } my $n = Term::Choose.new( prompt => 'AAAAA', mark => [ 5, 6 ] ); $n.choose( [ 1 .. 10 ] ); $n.choose( [ 1 .. 10 ], { prompt => 'BBBBB', mark => [ 1 .. 4 ] } ); $n.choose( [ 1 .. 10 ] );