my @flist = (); foreach my $i (0 .. 2) { push(@flist, sub {$i * $_[0]}); } foreach my $f (@flist) { print $f->(2), "\n"; } #### flist = [] for i in xrange(3): def func(x): return x * i flist.append(func) for f in flist: print f(2)