4 require Config; import Config;
5 if ($Config{'extensions'} !~ /\bOpcode\b/ && $Config{'osname'} ne 'VMS') {
12 use Test::More tests => 6;
14 my $safe = Safe->new('PLPerl');
15 $safe->permit_only(qw(:default sort));
17 # check basic argument passing and context for anon-subs
18 my $func = $safe->reval(q{ sub { @_ } });
19 is_deeply [ $func->() ], [ ];
20 is_deeply [ $func->("foo") ], [ "foo" ];
22 $func = $safe->reval(<<'EOS');
24 # uses quotes in { "$a" <=> $b } to avoid the optimizer replacing the block
25 # with a hardwired comparison
26 { package Pkg; sub p_sort { return sort { "$a" <=> $b } @_; } }
27 sub l_sort { return sort { "$a" <=> $b } @_; }
29 return sub { return join(",",l_sort(@_)), join(",",Pkg::p_sort(@_)) }
33 is $@, '', 'reval should not fail';
34 is ref $func, 'CODE', 'reval should return a CODE ref';
36 my ($l_sorted, $p_sorted) = $func->(1,2,3);
37 is $l_sorted, "1,2,3";
38 is $p_sorted, "1,2,3";