# USING SUBS TO EMULATE LOOP ITERATIONS my(@directives) = qw/ up down left right left down up right down left up right up down up down down up left left right right right right right left up down up up up up down down left down left up up down down left left left left left left left right up up down right left down down left right right right right right right left left left down up down up down up down up down down right right down up up up up up up up left left right up right left right left right left up down up down right left left left left right down up left right up up /; my($directions) = { 'up' => sub { '^' }, 'down' => sub { 'v' }, 'left' => sub { '<' }, 'right' => sub { '>' } }; sub go { while (@_) { print &{ $directions->{ shift @_ } } } } go(@directives); # "go up, go down, go right, left, etc...