*** a/src/pl/plperl/plc_perlboot.pl
--- b/src/pl/plperl/plc_perlboot.pl
***************
*** 27,42 **** sub ::mkfuncsrc {
  	my $BEGIN = join "\n", map {
  		my $names = $imports->{$_} || [];
  		"$_->import(qw(@$names));"
! 	} keys %$imports;
  	$BEGIN &&= "BEGIN { $BEGIN }";
  
  	$name =~ s/\\/\\\\/g;
  	$name =~ s/::|'/_/g; # avoid package delimiters
  
! 	my $funcsrc;
! 	$funcsrc .= qq[ undef *{'$name'}; *{'$name'} = sub { $BEGIN $prolog $src } ];
! 	#warn "plperl mkfuncsrc: $funcsrc\n";
! 	return $funcsrc;
  }
  
  # see also mksafefunc() in plc_safe_ok.pl
--- 27,40 ----
  	my $BEGIN = join "\n", map {
  		my $names = $imports->{$_} || [];
  		"$_->import(qw(@$names));"
! 	} sort keys %$imports;
  	$BEGIN &&= "BEGIN { $BEGIN }";
  
  	$name =~ s/\\/\\\\/g;
  	$name =~ s/::|'/_/g; # avoid package delimiters
+ 	$name =~ s/'/\'/g;
  
! 	return qq[ undef *{'$name'}; *{'$name'} = sub { $BEGIN $prolog $src } ];
  }
  
  # see also mksafefunc() in plc_safe_ok.pl
*** a/src/pl/plperl/plc_safe_ok.pl
--- b/src/pl/plperl/plc_safe_ok.pl
***************
*** 25,30 **** $PLContainer->share(qw[&elog &return_next
--- 25,31 ----
  $PLContainer->permit(qw[caller]);
  ::safe_eval(q{
  	require strict;
+ 	require warnings;
  	require feature if $] >= 5.010000;
  	1;
  }) or die $@;
