my @code = ...; my $sub = join "\n", 'use strict;', 'use warnings;', 'sub test {', @code, '} 1;'; if( eval $sub != 1 ) { ## look in $@ for errors; }