NAME
Data::FSM - Data object for Finite State Machine.
SYNOPSIS
use Data::FSM;
my $obj = Data::FSM->new(%params);
my $id = $obj->id;
my $states_ar = $obj->states;
my $transitions_ar = $obj->transitions;
METHODS
new
my $obj = Data::FSM->new(%params);
Constructor.
idFSM id.
It's optional.
Default value is undef.
statesReference to array with Data::FSM::State instances.
Default value is [].
transitionsReference to array with Data::FSM::Transition instances. The used states in transition must be a in
statesvalues.Default value is [].
Returns instance of object.
id
my $id = $obj->id;
Get FSM id.
Returns number.
states
my $states_ar = $obj->states;
Get list of FSM states.
Returns reference to array with Data::FSM::State instances.
transition
my $transitions_ar = $obj->transitions;
Get list of FSM transitions.
Returns reference to array with Data::FSM::Transition instances.
ERRORS
new():
From Data::FSM::Utils::check_transition_objects():
Parameter 'transitions' check hasn't defined state objects.
Parameter 'transitions' contains object which has 'from' object which isn't in defined objects.
Reference: %s
Parameter 'transitions' contains object which has 'to' object which isn't in defined objects.
Reference: %s
From Mo::utils::Array::check_array_object():
Parameter 'states' must be a array.
Value: %s
Reference: %s
Parameter 'states' with array must contain 'Data::FSM::State' objects.
Value: %s
Reference: %s
Parameter 'transitions' must be a array.
Value: %s
Reference: %s
Parameter 'transitions' with array must contain 'Data::FSM::Transition' objects.
Value: %s
Reference: %s
From Mo::utils::Number::check_positive_natural():
Parameter 'id' must be a positive natural number.
Value: %s
EXAMPLE
use strict;
use warnings;
use Data::FSM;
use Data::FSM::State;
use Data::FSM::Transition;
my $state1 = Data::FSM::State->new(
'name' => 'From',
);
my $state2 = Data::FSM::State->new(
'name' => 'To',
);
my $fsm = Data::FSM->new(
'id' => 7,
'states' => [
$state1,
$state2,
],
'transitions' => [
Data::FSM::Transition->new(
'from' => $state1,
'to' => $state2,
),
],
);
# Print out.
print 'Id: '.$fsm->id."\n";
print "States:\n";
foreach my $state (@{$fsm->states}) {
print '- '.$state->name."\n";
}
print "Transitions:\n";
foreach my $transition (@{$fsm->transitions}) {
print '- '.$transition->from->name.' -> '.$transition->to->name."\n";
}
# Output:
# Id: 7
# States:
# - From
# - To
# Transitions:
# - From -> To
DEPENDENCIES
Data::FSM::Utils, Mo, Mo::utils::Array, Mo::utils::Number.
REPOSITORY
https://github.com/michal-josef-spacek/Data-FSM
AUTHOR
Michal Josef Špaček mailto:skim@cpan.org
LICENSE AND COPYRIGHT
© 2025-2026 Michal Josef Špaček
BSD 2-Clause License
VERSION
0.01