aboutsummaryrefslogtreecommitdiff
path: root/challenge-034/arne-sommer/perl6/dispatch-anon
blob: 4abc4d5f90ae0b9ec0de804110998477fd698796 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /usr/bin/env raku

my $value = 0;

my %dispatch;

%dispatch<q> = %dispatch<quit>   = { exit  };
%dispatch<d> = %dispatch<double> = { $value *= 2 };
%dispatch<h> = %dispatch<half>   = { $value /= 2 };
%dispatch<c> = %dispatch<clear>  = { $value = 0 };
%dispatch<help>                  = { say "Please consult a doctor." };

loop
{
  my $command = prompt "[$value]: ";

  if %dispatch{$command}     { %dispatch{$command}(); }
  elsif $command ~~ /^(\d)$/ { $value = $0.Int; }
}