sub hanoi { my ($disks, $start, $end, $via) = @_; return () if $disks == 0; return ( hanoi($disks-1, $start, $via, $end), [$start, $end], hanoi($disks-1, $via, $end, $start) ); }