Linked Listの作り方

Perlでリンクリストを作る方法だけど、いまいちコードが読めない。

my $list = undef;
my $tail = \$list;

foreach (1..5) {
    my $node = [undef, $_*$_];
    $$tail = $node;
    $tail = \${$node->[NEXT]};
}

誰か解説してくれないかなぁ〜