#!/usr/bin/perl -w use strict; ## variables my $magic = 2; my $sub = sub { $_[0] * $_[1] }; # sub ref my %item; ## subroutine sub tpl { $magic * 3 }; ## populate our hash $item{ '1' } = \$magic; # ref $item{ 'dbl' } = sub { $magic * 2 }; # anonymous sub $item{ 'tpl' } = sub { &tpl() }; # anon sub calls sub $item{ 'x' } = sub { $sub->( $magic, $_[0] ) }; # anon sub calls sub ref ## fool with $magic value, ## display results print "Magic: $magic\t1: ", ${$item{1}}, "\tdbl: ", &{$item{ 'dbl' }}(), "\ttpl: ", $item{ 'tpl' }->(), "\tx(4): ", $item{ 'x' }->(4), "\n"; $magic += 1; print "Magic: $magic\t1: ", ${$item{1}}, "\tdbl: ", $item{ 'dbl' }->(), "\ttpl: ", &{$item{ 'tpl' }}(), "\tx(4): ", $item{ 'x' }->(4), "\n"; $magic -= 1; print "Magic: $magic\t1: ", ${$item{1}}, "\tdbl: ", &{$item{ 'dbl' }}(), "\ttpl: ", $item{ 'tpl' }->(), "\tx(4): ", &{$item{ 'x' }}(4), "\n"; $magic *= 5; print "Magic: $magic\t1: ", ${$item{1}}, "\tdbl: ", $item{ 'dbl' }->(), "\ttpl: ", &{$item{ 'tpl' }}(), "\tx(4): ", $item{ 'x' }->(4), "\n"; ## we're good print "Done\n\n"; exit(0);