Я не очень опытен в Perl и пытаюсь использовать FSA :: Rules. Что делает сдвиг в этом коде?
my $fsa = FSA::Rules->new(
ping => {
do => sub {
print "ping!\n";
my $state = shift;
$state->result('pong');
$state->machine->{count}++;
},
rules => [
game_over => sub { shift->machine->{count} >= 20 },
pong => sub { shift->result eq 'pong' },
],
},
pong => {
do => sub { print "pong!\n" },
rules => [ ping => 1, ], # always goes back to ping
},
game_over => { do => sub { print "Game Over\n" } }
);
$fsa->start;
$fsa->switch until $fsa->at('game_over');