foreach my $block ($self->get_blocks) { my %data = map { $_ => $block->$_ } qw/ package code setup teardown /; eval <<" END"; package $data{package}; \$data{setup}->(); \$data{code}->(); \$data{teardown}->(); END $self->_croak($@) if $@; } #### foreach my $block ($self->get_blocks) { package $block->package; eval { $block->setup->(); $block->code->(); $block->teardown->(); }; $self->_croak($@) if $@; }