linked-list.pl

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