#! /usr/bin/perl use strict; use warnings; my $A = q(my $arg = shift;print "A ";print "$arg\n";); my $B = q(print "B\n";); my %subs = ( A => eval "sub { $A }", B => eval "sub { $B }", O => sub {my $arg = shift;print "O ";print "$arg\n";} ); for my $key (sort keys %subs ) { eval $subs{$key}->(10) ; }