# ...
my %func;
@func{qw( count geometric_mean harmonic_mean
max maxdex mean
median min mindex
mode sample_range standard_deviation
sum trimmed_mean variance )} = ();
my $s = Statistics::Descriptive::Full->new();
while (1) {
print "Listo> ";
my $command = readline(STDIN) // last;
$command =~ s/^\s+//; $command =~ s/\s+$//;
given ($command) {
when ( looks_like_number($_) ) { $s->add_data($command) }
when (%func) { say "$command = " . $s->$command() }
when (/^(exit|quit)$/) {last}
default { say SYNTAX_ERROR }
}
}
As the smart-match table shows, $scalar ~~ %hash
tests for hash-key existence. In this case, given ($command)
followed by when (%func)
checks whether the current command is a builtin and, when it is, invokes the method with the same name.
No comments:
Post a Comment