At the same time, every time I look at the source, my eyes land on a series of elsif's, and I think "That's so Perl 5!" Here it is:
Starting at the beginning, that first line is a wonderful bit of Perl 6 craziness.
$message .= split(' ');
is equivalent to $message = $message.split(' ');
. What's wacky about that is $message
starts off as a string, and ends up an array! The next two lines make the first element of the array $command
and the rest of them $params
. (If you're wondering about how $message
and $params
can be arrays, they are array objects in scalar variables. Or something like that, I'm fuzzy on the details, but it clearly works.)I'd recast all these lines as one simple line harking back to Perl 5, but in a nice Perl 6 way:
my ($command, @params) = $message.split(' ');
It would perhaps be better to split on \s+
, too. And now we can switch $message away from being a rw
parameter. (I believe doing that will not mess up the rest of the bot code, but I admit I haven't actually tested it.)Then the rest of the function is probably better expressed as given / when block. The great thing is all those
$command ~~ 'karma'
can become just 'karma'
if we do given $command
.(Hmmm... actually now that I look at it, how the heck does the
Str $message is rw
handle being converted to an array of strings in the old code?)
No comments:
Post a Comment