sub toggle { my @states = @_; my $index = 0; return sub { return $states[ $index++ % ( scalar @states ) ]; } } #### my $t = &toggle qw( alfa beta gamma ); print &$t(), "\n" foreach ( 1 .. 20 ); #### sub curry { my ( $fnc, @arguments ) = @_; return sub { return &$fnc( @arguments, @_ ); } } #### sub echo { return join( " ", @_ ); } #### my $boss = &curry( \&echo, "My", "boss:" ); my $friend = &curry( \&echo, "Johnny:" ); print &$boss qw( has pointy hair ), "\n"; # "My boss: has pointy hair print &$friend qw( likes rock and roll ), "\n"; # etc.