#! /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"; }