-" my ($data, $id) = @_;\n"
-" destroy(\"Irssi::Script::$id\");\n"
-"\n"
-" my $package = \"Irssi::Script::$id\";\n"
-" my $eval = qq{package $package; %s sub handler { $data; }};\n"
-" {\n"
-" # hide our variables within this block\n"
-" my ($filename, $package, $data);\n"
-" eval $eval;\n"
-" }\n"
-" die $@ if $@;\n"
-"\n"
-" my $ret;\n"
-" eval { $ret = $package->handler; };\n"
-" die $@ if $@;\n"
-" return $ret;\n"
+" my $ret = eval do {\n"
+" my ($data, $id) = @_;\n"
+" destroy(\"Irssi::Script::$id\");\n"
+" my $code = qq{package Irssi::Script::$id; %s $data};\n"
+" $code\n"
+" };\n"
+" $@ and die $@;\n"
+" $ret\n"