use strict; use warnings; use 5.010; my $data = do{local $/ = undef; }; $data = sprintf $data, 'Foo'; eval "$data"; Foo::foo(); __DATA__ package %s; sub foo{ say "foo" } sub bar{ say "bar" }