##
## make_node()
## Arguments: $value: scalar, contents of the node
## $next_node: linked list node (optional)
##
sub new_node {
my ($value, $next_node) = @_;
my $new_node = [$value, $next_node];
return $new_node;
}
####
$last_node = new_node('last', undef);
$middle_node = new_node('middle', $last_node);
$first_node = new_node('first', $middle_node);
####
sub traverse_nodes
{
my ($node) = @_;
my ($value, $next_node) = @$node;
if ( defined($next_node) ) {
return ($value, traverse_nodes($next_node));
}
else {
return $value;
}
}
####
print join(' ', traverse_nodes($first_node) ), "\n";