If you need to extract the exact source code, it may be quite difficult. If it is sufficient to get a functional equivalent, look into B::Deparse; from the docs:
use B::Deparse;
$deparse = B::Deparse->new("-p", "-sC");
$body = $deparse->coderef2text(\&func);
and here's a specific example as a one-liner:
zen% perl -MB::Deparse -MCarp -wle 'print B::Deparse->new("-p","-sC"
+)->coderef2text(\&Carp::confess)'
{
package Carp;
die(longmess(@_));
}
zen%
See the rest of the docs for full details of the options available.
Hugo