Ключ заключается в том, чтобы избежать любых одинарных кавычек в значении, которое вы пытаетесь вернуть, и затем использовать VIM::DoCommand("return '$data'")
.
Например:
function PhoneHome()
perl << EOF
use IO::Socket;
my $mothership = IO::Socket->INET->connect()
my $data = <$mothership>;
$data =~ s|'|''|g; # escape '
VIM::DoCommand("return '$data'")
EOF
endfunction
Также см. :help perl
и :help perl-DoCommand
. Но по большей части это на самом деле не задокументировано.