#! /usr/bin/perl
use strict;
use warnings;
sub insert_after {
my($node, $value) = @_;
my $new_node = {
'value' => $value,
'next' => $node->{'next'}
};
$node->{'next'} = $new_node;
return $new_node;
}
my $head = { 'value' => 'Head', 'next' => undef };
my $tail = insert_after($head, 'another middle');
insert_after($head, 'middle');
insert_after($head, 'first');
insert_after($tail, 'last');
for(my $i = $head->{'next'};
defined $i;
$i = $i->{'next'}) {
print "$i->{'value'}\n";
}