+ * "sub => $bool"
+
+ Encloses the code into a "sub { }" block. Default is true.
+
+ * "compile => $bool"
+
+ Makes "wrap" compile the code generated and return the resulting
+ code reference. Be careful that in this case "ref" must be a fully
+ qualified function name. Defaults to true, but turned off when "sub"
+ is false.
+
+ For example, this allows you to recall into "CORE::grep" and "CORE::map"
+ by using the "\&@" prototype :
+
+ my $grep = wrap { 'CORE::grep' => '\&@' };
+ # the prototypes are intentionally different
+ sub mygrep (&@) { $grep->(@_) }
+
+ "recall"
+ my @res = recall($name, @args);
+ my @res = recall({ $name => $proto }, @args);
+
+ Calls the function $name with the prototyped argument list @args. That
+ is, @args should be what @_ is when you call a subroutine with $name as
+ prototype. You can still force the prototype by passing "{ $name =>
+ $proto }" as the first argument.
+
+ my $a = [ ];
+ recall { 'CORE::push' => '\@$' }, $a, 1, 2, 3; # $a just contains 1