Linux cpanel2.daytoncreative.net 2.6.32-754.29.2.el6.x86_64 #1 SMP Tue May 12 17:39:04 UTC 2020 x86_64
Apache/2.4.43 (cPanel) OpenSSL/1.1.1g mod_bwlimited/1.4
Server IP : 70.62.220.67 & Your IP : 216.73.216.193
Domains :
Cant Read [ /etc/named.conf ]
User : michaelgreg
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
log /
perl-5.20.2 /
t /
op /
Delete
Unzip
Name
Size
Permission
Date
Action
64bitint.t
8.14
KB
-r--r--r--
2014-12-27 11:49
alarm.t
1.5
KB
-r--r--r--
2014-12-27 11:49
anonsub.t
1.7
KB
-r--r--r--
2014-12-27 11:49
append.t
1.58
KB
-r--r--r--
2014-12-27 11:49
args.t
2.12
KB
-r--r--r--
2014-12-27 11:49
array.t
12.32
KB
-r--r--r--
2014-12-27 11:49
array_base.t
720
B
-r--r--r--
2014-12-27 11:49
assignwarn.t
1.52
KB
-r--r--r--
2014-12-27 11:49
attrhand.t
1.01
KB
-r--r--r--
2014-12-27 11:49
attrproto.t
6.55
KB
-r--r--r--
2014-12-27 11:49
attrs.t
10.73
KB
-r--r--r--
2014-12-27 11:49
auto.t
2.36
KB
-r--r--r--
2014-12-27 11:49
avhv.t
4.04
KB
-r--r--r--
2014-12-27 11:49
bless.t
4.12
KB
-r--r--r--
2014-12-27 11:49
blocks.t
2.95
KB
-r--r--r--
2014-12-27 11:49
bop.t
12.82
KB
-r--r--r--
2014-12-27 11:49
caller.pl
3.75
KB
-r--r--r--
2014-12-27 11:49
caller.t
8.14
KB
-r--r--r--
2014-12-27 11:49
chars.t
1.73
KB
-r--r--r--
2014-12-27 11:49
chdir.t
6.68
KB
-r--r--r--
2014-12-27 11:49
chop.t
7.67
KB
-r--r--r--
2014-12-27 11:49
chr.t
2.48
KB
-r--r--r--
2014-12-27 11:49
closure.t
19.6
KB
-r--r--r--
2014-12-27 11:49
closure_test.pl
327
B
-r--r--r--
2014-12-27 11:49
concat2.t
1.41
KB
-r--r--r--
2014-12-27 11:49
cond.t
282
B
-r--r--r--
2014-12-27 11:49
context.t
404
B
-r--r--r--
2014-12-27 11:49
coreamp.t
29.17
KB
-r--r--r--
2014-12-27 11:49
coresubs.t
4.87
KB
-r--r--r--
2014-12-27 11:49
cproto.t
3.6
KB
-r--r--r--
2014-12-27 11:49
crypt.t
1.17
KB
-r--r--r--
2014-12-27 11:49
current_sub.t
1.71
KB
-r--r--r--
2014-12-27 11:49
dbm.t
1.54
KB
-r--r--r--
2014-12-27 11:49
defined.t
551
B
-r--r--r--
2014-12-27 11:49
defins.t
4.84
KB
-r--r--r--
2014-12-27 11:49
delete.t
2.93
KB
-r--r--r--
2014-12-27 11:49
die.t
1.99
KB
-r--r--r--
2014-12-27 11:49
die_except.t
1.57
KB
-r--r--r--
2014-12-27 11:49
die_exit.t
1.9
KB
-r--r--r--
2014-12-27 11:49
die_keeperr.t
1.57
KB
-r--r--r--
2014-12-27 11:49
die_unwind.t
1.69
KB
-r--r--r--
2014-12-27 11:49
do.t
8.35
KB
-r--r--r--
2014-12-27 11:49
dor.t
2.64
KB
-r--r--r--
2014-12-27 11:49
each.t
7.09
KB
-r--r--r--
2014-12-27 11:49
each_array.t
5.48
KB
-r--r--r--
2014-12-27 11:49
eval.t
13.92
KB
-r--r--r--
2014-12-27 11:49
evalbytes.t
989
B
-r--r--r--
2014-12-27 11:49
exec.t
4.36
KB
-r--r--r--
2014-12-27 11:49
exists_sub.t
2.09
KB
-r--r--r--
2014-12-27 11:49
exp.t
1.47
KB
-r--r--r--
2014-12-27 11:49
fh.t
790
B
-r--r--r--
2014-12-27 11:49
filehandle.t
564
B
-r--r--r--
2014-12-27 11:49
filetest.t
11.97
KB
-r--r--r--
2014-12-27 11:49
filetest_stack_ok.t
1.12
KB
-r--r--r--
2014-12-27 11:49
filetest_t.t
1.18
KB
-r--r--r--
2014-12-27 11:49
flip.t
868
B
-r--r--r--
2014-12-27 11:49
for.t
12.77
KB
-r--r--r--
2014-12-27 11:49
fork.t
8.8
KB
-r--r--r--
2014-12-27 11:49
fresh_perl_utf8.t
411
B
-r--r--r--
2014-12-27 11:49
getpid.t
1.61
KB
-r--r--r--
2014-12-27 11:49
getppid.t
3.13
KB
-r--r--r--
2014-12-27 11:49
glob.t
4.22
KB
-r--r--r--
2014-12-27 11:49
gmagic.t
5.97
KB
-r--r--r--
2014-12-27 11:49
goto.t
14.85
KB
-r--r--r--
2014-12-27 11:49
goto_xs.t
2.98
KB
-r--r--r--
2014-12-27 11:49
grent.t
4.46
KB
-r--r--r--
2014-12-27 11:49
grep.t
6.66
KB
-r--r--r--
2014-12-27 11:49
groups.t
11.15
KB
-r--r--r--
2014-12-27 11:49
gv.t
30.15
KB
-r--r--r--
2014-12-27 11:49
hash-rt85026.t
1.57
KB
-r--r--r--
2014-12-27 11:49
hash.t
6.02
KB
-r--r--r--
2014-12-27 11:49
hashassign.t
18.85
KB
-r--r--r--
2014-12-27 11:49
hashwarn.t
2.05
KB
-r--r--r--
2014-12-27 11:49
heredoc.t
2.29
KB
-r--r--r--
2014-12-27 11:49
inc.t
6.72
KB
-r--r--r--
2014-12-27 11:49
inccode-tie.t
338
B
-r--r--r--
2014-12-27 11:49
inccode.t
11.19
KB
-r--r--r--
2014-12-27 11:49
incfilter.t
7.33
KB
-r--r--r--
2014-12-27 11:49
index.t
6.81
KB
-r--r--r--
2014-12-27 11:49
index_thr.t
56
B
-r--r--r--
2014-12-27 11:49
int.t
1.72
KB
-r--r--r--
2014-12-27 11:49
join.t
3.2
KB
-r--r--r--
2014-12-27 11:49
kill0.t
3.18
KB
-r--r--r--
2014-12-27 11:49
kill0_child
596
B
-r--r--r--
2014-12-27 11:49
kvaslice.t
4.66
KB
-r--r--r--
2014-12-27 11:49
kvhslice.t
5.44
KB
-r--r--r--
2014-12-27 11:49
lc.t
11.8
KB
-r--r--r--
2014-12-27 11:49
leaky-magic.t
3.43
KB
-r--r--r--
2014-12-27 11:49
length.t
5.03
KB
-r--r--r--
2014-12-27 11:49
lex.t
2.33
KB
-r--r--r--
2014-12-27 11:49
lex_assign.t
7.17
KB
-r--r--r--
2014-12-27 11:49
lexsub.t
19.62
KB
-r--r--r--
2014-12-27 12:24
lfs.t
6.2
KB
-r--r--r--
2014-12-27 11:49
list.t
5.31
KB
-r--r--r--
2014-12-27 11:52
local.t
17.11
KB
-r--r--r--
2014-12-27 11:49
localref.t
2.73
KB
-r--r--r--
2014-12-27 11:49
lock.t
465
B
-r--r--r--
2014-12-27 11:49
loopctl.t
17.88
KB
-r--r--r--
2014-12-27 11:49
lop.t
1.2
KB
-r--r--r--
2014-12-27 11:49
magic-27839.t
622
B
-r--r--r--
2014-12-27 11:49
magic.t
21.81
KB
-r--r--r--
2014-12-27 11:49
method.t
18.91
KB
-r--r--r--
2014-12-27 11:49
mkdir.t
1.25
KB
-r--r--r--
2014-12-27 11:49
my.t
4.29
KB
-r--r--r--
2014-12-27 11:49
my_stash.t
769
B
-r--r--r--
2014-12-27 11:49
mydef.t
5.51
KB
-r--r--r--
2014-12-27 11:49
negate.t
4.3
KB
-r--r--r--
2014-12-27 11:49
not.t
3.15
KB
-r--r--r--
2014-12-27 11:49
numconvert.t
8.33
KB
-r--r--r--
2014-12-27 11:49
oct.t
3.58
KB
-r--r--r--
2014-12-27 11:49
or.t
1.79
KB
-r--r--r--
2014-12-27 11:49
ord.t
2.48
KB
-r--r--r--
2014-12-27 11:49
overload_integer.t
506
B
-r--r--r--
2014-12-27 11:49
override.t
4.33
KB
-r--r--r--
2014-12-27 11:49
pack.t
65.34
KB
-r--r--r--
2014-12-27 11:49
packagev.t
5.97
KB
-r--r--r--
2014-12-27 11:49
pos.t
3.59
KB
-r--r--r--
2014-12-27 11:49
postfixderef.t
11.97
KB
-r--r--r--
2014-12-27 11:49
pow.t
2.34
KB
-r--r--r--
2014-12-27 11:49
print.t
692
B
-r--r--r--
2014-12-27 11:49
protowarn.t
1.35
KB
-r--r--r--
2014-12-27 11:49
push.t
3.03
KB
-r--r--r--
2014-12-27 11:49
pwent.t
6.63
KB
-r--r--r--
2014-12-27 11:49
qr.t
2.32
KB
-r--r--r--
2014-12-27 11:49
quotemeta.t
5.61
KB
-r--r--r--
2014-12-27 11:49
rand.t
8.31
KB
-r--r--r--
2014-12-27 11:49
range.t
9.25
KB
-r--r--r--
2014-12-27 11:49
read.t
2.28
KB
-r--r--r--
2014-12-27 11:49
readdir.t
2.09
KB
-r--r--r--
2014-12-27 11:49
readline.t
7.19
KB
-r--r--r--
2014-12-27 11:49
recurse.t
2.73
KB
-r--r--r--
2014-12-27 11:49
ref.t
22.74
KB
-r--r--r--
2014-12-27 11:49
repeat.t
4.8
KB
-r--r--r--
2014-12-27 11:49
require_37033.t
1.18
KB
-r--r--r--
2014-12-27 11:49
require_errors.t
3.68
KB
-r--r--r--
2014-12-27 11:49
reset.t
5.41
KB
-r--r--r--
2014-12-27 11:49
reverse.t
3.01
KB
-r--r--r--
2014-12-27 11:49
rt119311.t
5.58
KB
-r--r--r--
2014-12-27 11:49
runlevel.t
5.28
KB
-r--r--r--
2014-12-27 11:49
select.t
1.03
KB
-r--r--r--
2014-12-27 11:49
setpgrpstack.t
378
B
-r--r--r--
2014-12-27 11:49
sigdispatch.t
4.33
KB
-r--r--r--
2014-12-27 11:49
signatures.t
41.02
KB
-r--r--r--
2014-12-27 11:49
sigsystem.t
1.36
KB
-r--r--r--
2014-12-27 11:49
sleep.t
468
B
-r--r--r--
2014-12-27 11:49
smartkve.t
18.26
KB
-r--r--r--
2014-12-27 11:49
smartmatch.t
10.34
KB
-r--r--r--
2014-12-27 11:49
sort.t
28.4
KB
-r--r--r--
2015-01-10 13:17
splice.t
3.38
KB
-r--r--r--
2014-12-27 11:49
split.t
13.1
KB
-r--r--r--
2014-12-27 11:49
split_unicode.t
2.4
KB
-r--r--r--
2014-12-27 11:49
sprintf.t
28.5
KB
-r--r--r--
2014-12-27 11:49
sprintf2.t
5.49
KB
-r--r--r--
2014-12-27 11:49
srand.t
1.87
KB
-r--r--r--
2014-12-27 11:49
sselect.t
2.67
KB
-r--r--r--
2014-12-27 11:49
stash.t
9.01
KB
-r--r--r--
2014-12-27 11:49
stat.t
17.51
KB
-r--r--r--
2014-12-27 11:49
state.t
9.72
KB
-r--r--r--
2014-12-27 12:15
study.t
2.99
KB
-r--r--r--
2014-12-27 11:49
studytied.t
1.29
KB
-r--r--r--
2014-12-27 11:49
sub.t
6.54
KB
-r--r--r--
2014-12-27 11:49
sub_lval.t
24.2
KB
-r--r--r--
2014-12-27 11:49
substr.t
20.53
KB
-r--r--r--
2014-12-27 11:49
substr_thr.t
56
B
-r--r--r--
2014-12-27 11:49
svleak.pl
6
B
-r--r--r--
2014-12-27 11:49
svleak.t
15.93
KB
-r--r--r--
2015-01-10 12:06
switch.t
28.06
KB
-r--r--r--
2014-12-27 11:49
symbolcache.t
1.06
KB
-r--r--r--
2014-12-27 11:49
sysio.t
5
KB
-r--r--r--
2014-12-27 11:49
taint.t
66.84
KB
-r--r--r--
2014-12-27 12:32
threads-dirh.t
3.47
KB
-r--r--r--
2014-12-27 11:49
threads.t
9.3
KB
-r--r--r--
2014-12-27 11:49
threads_create.pl
42
B
-r--r--r--
2014-12-27 11:49
tie.t
28.34
KB
-r--r--r--
2014-12-27 11:49
tie_fetch_count.t
11.49
KB
-r--r--r--
2014-12-27 11:49
tiearray.t
4.53
KB
-r--r--r--
2014-12-27 11:49
tiehandle.t
5.27
KB
-r--r--r--
2014-12-27 11:49
time.t
7.86
KB
-r--r--r--
2015-01-17 11:51
time_loop.t
378
B
-r--r--r--
2014-12-27 11:49
tr.t
12.99
KB
-r--r--r--
2014-12-27 11:49
undef.t
3.15
KB
-r--r--r--
2014-12-27 11:49
universal.t
8.32
KB
-r--r--r--
2014-12-27 11:49
unlink.t
1.02
KB
-r--r--r--
2014-12-27 11:49
unshift.t
3.17
KB
-r--r--r--
2014-12-27 11:49
upgrade.t
1.15
KB
-r--r--r--
2014-12-27 11:49
utf8cache.t
3.83
KB
-r--r--r--
2014-12-27 11:49
utf8decode.t
7.59
KB
-r--r--r--
2014-12-27 11:49
utf8magic.t
808
B
-r--r--r--
2014-12-27 11:49
utfhash.t
5.33
KB
-r--r--r--
2014-12-27 11:49
utftaint.t
4.46
KB
-r--r--r--
2014-12-27 11:49
vec.t
2.87
KB
-r--r--r--
2014-12-27 11:49
ver.t
8.39
KB
-r--r--r--
2014-12-27 11:49
waitpid.t
973
B
-r--r--r--
2014-12-27 11:49
wantarray.t
874
B
-r--r--r--
2014-12-27 11:49
warn.t
4.15
KB
-r--r--r--
2014-12-27 11:49
while.t
3.81
KB
-r--r--r--
2014-12-27 11:49
write.t
39.99
KB
-r--r--r--
2015-01-24 15:03
yadayada.t
1.67
KB
-r--r--r--
2015-01-15 22:12
Save
Rename
#!./perl =head postfixderef this file contains all dereferencing tests from ref.t but using postfix instead of prefix or circumfix syntax. =cut BEGIN { chdir 't' if -d 't'; @INC = qw(. ../lib); require 'test.pl'; } use strict qw(refs subs); plan(125); { no warnings qw 'deprecated syntax'; eval '[]->$*'; like $@, qr/Can't call method/, '->$* outside of feature scope'; eval '[]->@*'; like $@, qr/syntax error/, '->@* outside of feature scope'; eval '[]->@[1]'; like $@, qr/syntax error/, '->@[ outside of feature scope'; eval '[]->@{1}'; like $@, qr/syntax error/, '->@{ outside of feature scope'; eval '[]->%*'; like $@, qr/syntax error/, '->%* outside of feature scope'; eval '[]->%[1]'; like $@, qr/syntax error/, '->%[ outside of feature scope'; eval '[]->%{1}'; like $@, qr/syntax error/, '->%{ outside of feature scope'; eval '[]->&*'; like $@, qr/syntax error/, '->&* outside of feature scope'; eval '[]->**'; like $@, qr/syntax error/, '->** outside of feature scope'; eval '[]->*{'; like $@, qr/syntax error/, '->*{ outside of feature scope'; } use feature 'postderef'; no warnings 'experimental::postderef'; { no strict 'refs'; # Test fake references. $baz = "valid"; $bar = 'baz'; $foo = 'bar'; # is ($$$foo, 'valid'); is ($$foo->$*, 'valid'); is ($foo->$*->$*, 'valid'); } # Test real references. $FOO = \$BAR; $BAR = \$BAZ; $BAZ = "hit"; # is ($$$FOO, 'hit'); is ($$FOO ->$*, 'hit'); is ($FOO-> $* ->$*, 'hit'); # Test references to real arrays. my $test = curr_test(); @ary = ($test,$test+1,$test+2,$test+3); $ref[0] = \@a; $ref[1] = \@b; $ref[2] = \@c; $ref[3] = \@d; for $i (3,1,2,0) { # push(@{$ref[$i]}, "ok $ary[$i]\n"); push($ref[$i]-> @*, "ok $ary[$i]\n"); } print @a; #print ${$ref[1]}[0]; #print @{$ref[2]}[0]; print $ref[1]->[0]; print $ref[2]->@[0]; { no strict 'refs'; print 'd'->@*; # print @{'d'}; } curr_test($test+4); # Test references to references. $refref = \\$x; $x = "Good"; is ($refref->$*->$*, 'Good'); # is ($$$refref, 'Good'); # Test nested anonymous lists. $ref = [[],2,[3,4,5,]]; is (scalar $ref->@*, 3); # is (scalar @$ref, 3); is ($ref->[1], 2); # is ($$ref[1], 2); # is (${$$ref[2]}[2], 5); is (${$ref->[2]}[2], 5); is ($ref->[2]->[2], 5); is ($ref->[2][2], 5); is (scalar $ref->[0]->@*, 0); # is (scalar @{$$ref[0]}, 0); is ($ref->[1], 2); is ($ref->[2]->[0], 3); # Test references to hashes of references. $refref = \%whatever; $refref->{"key"} = $ref; is ($refref->{"key"}->[2]->[0], 3); is ($refref->{"key"}->[2][0], 3); is ($refref->{"key"}[2]->[0], 3); is ($refref->{"key"}[2][0], 3); # Test to see if anonymous subarrays spring into existence. $spring[5]->[0] = 123; $spring[5]->[1] = 456; push($spring[5]->@*, 789); # push(@{$spring[5]}, 789); is (join(':',$spring[5]->@*), "123:456:789"); # is (join(':',@{$spring[5]}), "123:456:789"); # Test to see if anonymous subhashes spring into existence. $spring2{"foo"}->@* = (1,2,3); # @{$spring2{"foo"}} = (1,2,3); $spring2{"foo"}->[3] = 4; is (join(':',$spring2{"foo"}->@*), "1:2:3:4"); # Test references to subroutines. { my $called; sub mysub { $called++; } local $subref = \&mysub; &$subref; is ($called, 1); ok(eval '$subref->&*',"ampersand-star runs coderef: syntax"); is ($called, 2); local *mysubalias; ok(eval q{'mysubalias'->** = 'mysub'->**->*{CODE}}, "glob access syntax"); is ( eval 'mysubalias()', 2); is($called, 3); } is ref eval {\&{""}}, "CODE", 'reference to &{""} [perl #94476]'; # Test references to return values of operators (TARGs/PADTMPs) { my @refs; for("a", "b") { push @refs, \"$_" } # is join(" ", map $$_, @refs), "a b", 'refgen+PADTMP'; is join(" ", map $_->$*, @refs), "a b", 'refgen+PADTMP'; } $subrefref = \\&mysub2; is ($subrefref->$*->("GOOD"), "good"); # is ($$subrefref->("GOOD"), "good"); sub mysub2 { lc shift } # Test anonymous hash syntax. $anonhash = {}; is (ref $anonhash, 'HASH'); $anonhash2 = {FOO => 'BAR', ABC => 'XYZ',}; is (join('', sort values $anonhash2->%*), 'BARXYZ'); # is (join('', sort values %$anonhash2), 'BARXYZ'); $anonhash2->{23} = 'tt';@$anonhash2{skiddoo=> 99} = qw/rr nn/; is(join(':',$anonhash2->@{23 => skiddoo => 99}), 'tt:rr:nn', 'pf hash slice'); # test immediate destruction of lexical objects (op/ref.t tests LIFO order) { my $test = curr_test(); my ($ScopeMark, $Stoogetime) = (1,$test); sub InScope() { $ScopeMark ? "ok " : "not ok " } sub shoulda::DESTROY { print InScope,$test++," - Larry\n"; } sub coulda::DESTROY { print InScope,$test++," - Curly\n"; } sub woulda::DESTROY { print InScope,$test++," - Moe\n"; } sub frieda::DESTROY { print InScope,$test++," - Shemp\n"; } sub spr::DESTROY { print InScope,$test++," - postfix scalar reference\n"; } sub apr::DESTROY { print InScope,$test++," - postfix array reference\n"; } sub hpr::DESTROY { print InScope,$test++," - postfix hash reference\n"; } { no strict 'refs'; # and real references taken from symbolic postfix dereferences local ($joe, @curly, %larry, $momo); my ($s,@a,%h); my $woulda = bless \'joe'->$*, 'woulda'; my $frieda = bless \'momo'->$*, 'frieda'; my $coulda = eval q{bless \'curly'->@*, 'coulda' } or print "# $@","not ok ",$test++,"\n"; my $shoulda = eval q{bless \'larry'->%*, 'shoulda'} or print "# $@","not ok ",$test++,"\n"; # print "# postfix whack-star instead of prefix whack\n"; # my $spr = eval q/ bless $s->\* , "spr"/; $@ and print "# $@","not ok ",$test++,"\n"; # my $apr = eval q/ bless @a->\* , 'apr'/; $@ and print "# $@","not ok ",$test++,"\n"; # my $hpr = eval q/ bless %h->\* , 'hpr'/; $@ and print "# $@","not ok ",$test++,"\n"; print "# leaving block: we want (larry, curly, moe, shemp)\n"; } print "# left block\n"; $ScopeMark = 0; curr_test($test); is ($test, $Stoogetime + 4, "no stooges outlast their scope"); } { no strict 'refs'; $name8 = chr 163; $name_utf8 = $name8 . chr 256; chop $name_utf8; # is ($$name8, undef, 'Nothing before we start'); # is ($$name_utf8, undef, 'Nothing before we start'); # $$name8 = "Pound"; # is ($$name8, "Pound", 'Accessing via 8 bit symref works'); # is ($$name_utf8, "Pound", 'Accessing via UTF8 symref works'); is ($name8->$*, undef, 'Nothing before we start'); is ($name_utf8->$*, undef, 'Nothing before we start'); $name8->$* = "Pound"; is ($name8->$*, "Pound", 'Accessing via 8 bit symref works'); is ($name_utf8->$*, "Pound", 'Accessing via UTF8 symref works'); } { no strict 'refs'; $name_utf8 = $name = chr 9787; utf8::encode $name_utf8; is (length $name, 1, "Name is 1 char"); is (length $name_utf8, 3, "UTF8 representation is 3 chars"); is ($name->$*, undef, 'Nothing before we start'); is ($name_utf8->$*, undef, 'Nothing before we start'); $name->$* = "Face"; is ($name->$*, "Face", 'Accessing via Unicode symref works'); is ($name_utf8->$*, undef, 'Accessing via the UTF8 byte sequence still gives nothing'); } { no strict 'refs'; $name1 = "\0Chalk"; $name2 = "\0Cheese"; is ($ $name1, undef, 'Nothing before we start (scalars)'); is ($name2 -> $* , undef, 'Nothing before we start'); $name1 ->$* = "Yummy"; is ($name1-> $*, "Yummy", 'Accessing via the correct name works'); is ($$name2, undef, 'Accessing via a different NUL-containing name gives nothing'); # defined uses a different code path ok (defined $name1->$*, 'defined via the correct name works'); ok (!defined $name2->$*, 'defined via a different NUL-containing name gives nothing'); my (undef, $one) = $name1 ->@[2,3]; my (undef, $two) = $name2-> @[2,3]; is ($one, undef, 'Nothing before we start (array slices)'); is ($two, undef, 'Nothing before we start'); $name1->@[2,3] = ("Very", "Yummy"); (undef, $one) = $name1 -> @[2,3]; (undef, $two) = $name2 -> @[2,3]; is ($one, "Yummy", 'Accessing via the correct name works'); is ($two, undef, 'Accessing via a different NUL-containing name gives nothing'); ok (defined $one, 'defined via the correct name works'); ok (!defined $two, 'defined via a different NUL-containing name gives nothing'); } # test dereferencing errors { format STDERR = . my $ref; foreach $ref (*STDOUT{IO}, *STDERR{FORMAT}) { eval q/ $ref->$* /; like($@, qr/Not a SCALAR reference/, "Scalar dereference"); eval q/ $ref->@* /; like($@, qr/Not an ARRAY reference/, "Array dereference"); eval q/ $ref->%* /; like($@, qr/Not a HASH reference/, "Hash dereference"); eval q/ $ref->() /; like($@, qr/Not a CODE reference/, "Code dereference"); } $ref = *STDERR{FORMAT}; eval q/ $ref->** /; # postfix GLOB dereference ? like($@, qr/Not a GLOB reference/, "Glob dereference"); $ref = *STDOUT{IO}; eval q/ $ref->** /; is($@, '', "Glob dereference of PVIO is acceptable"); is($ref, (eval '$ref->*{IO}'), "IO slot of the temporary glob is set correctly"); } # these will segfault if they fail sub PVBM () { 'foo' } my $pvbm_r; ok(eval q/ $pvbm_r = \'PVBM'->&* /, "postfix symref to sub name"); is("$pvbm_r", "".\&PVBM, "postfix and prefix mechanisms provide same result"); my $pvbm = PVBM; my $rpvbm = \$pvbm; { my $SynCtr; ok (!eval q{ $SynCtr++; $rpvbm->** }, 'PVBM ref is not a GLOB ref'); ok (!eval q{ $SynCtr++; $pvbm->** }, 'PVBM is not a GLOB ref'); is ($SynCtr, 2, "starstar GLOB postderef parses"); } ok (!eval { $pvbm->$* }, 'PVBM is not a SCALAR ref'); ok (!eval { $pvbm->@* }, 'PVBM is not an ARRAY ref'); ok (!eval { $pvbm->%* }, 'PVBM is not a HASH ref'); # Test undefined hash references as arguments to %{} in boolean context # [perl #81750] { no strict 'refs'; eval { my $foo; $foo->%*; }; ok !$@, '%$undef'; eval { my $foo; scalar $foo->%*; }; ok !$@, 'scalar %$undef'; eval { my $foo; !$foo->%*; }; ok !$@, '!%$undef'; eval { my $foo; if ( $foo->%*) {} }; ok !$@, 'if ( %$undef) {}'; eval { my $foo; if (!$foo->%*) {} }; ok !$@, 'if (!%$undef) {}'; eval { my $foo; unless ( $foo->%*) {} }; ok !$@, 'unless ( %$undef) {}'; eval { my $foo; unless (!$foo->%*) {} }; ok !$@, 'unless (!%$undef) {}'; eval { my $foo; 1 if $foo->%*; }; ok !$@, '1 if %$undef'; eval { my $foo; 1 if !$foo->%*; }; ok !$@, '1 if !%$undef'; eval { my $foo; 1 unless $foo->%*; }; ok !$@, '1 unless %$undef;'; eval { my $foo; 1 unless ! $foo->%*; }; ok !$@, '1 unless ! %$undef'; eval { my $foo; $foo->%* ? 1 : 0; }; ok !$@, ' %$undef ? 1 : 0'; eval { my $foo; !$foo->%* ? 1 : 0; }; ok !$@, '!%$undef ? 1 : 0'; } # Postfix key/value slices is join(" ", {1..10}->%{1, 7, 3}), "1 2 7 8 3 4", '->%{'; is join(" ", ['a'..'z']->%[1, 7, 3]), "1 b 7 h 3 d", '->%['; # Array length is [1..10]->$#*, 9, 'rvalue ->$#*'; @foo = 1..10; (\@foo)->$#*--; is "@foo", "1 2 3 4 5 6 7 8 9", 'lvalue ->$#*'; # Interpolation $_ = "foo"; @foo = 7..9; %foo = qw( foo oof ); { no warnings 'deprecated'; $* = 42; is "$_->$*", 'foo->42', '->$* interpolation without feature'; $# = 43; is "$_->$#*", 'foo->43*', '->$#* interpolation without feature'; } is "$_->@*", 'foo->@*', '->@* does not interpolate without feature'; is "$_->@[0]", 'foo->@[0]', '->@[ does not interpolate without feature'; is "$_->@{foo}", "foo->7 8 9", '->@{ does not interpolate without feature'; { use feature 'postderef_qq'; no strict 'refs'; $foo = 43; is "$_->$*", "43", '->$* interpolated'; is "$_->$#*", "2", '->$#* interpolated'; is "$_->@*", "7 8 9", '->@* interpolated'; is "$_->@[0,1]", "7 8", '->@[ interpolated'; is "$_->@{foo}", "oof", '->@{ interpolated'; is "foo$_->$*bar", "foo43bar", '->$* interpolated w/other stuff'; is "foo$_->@*bar", "foo7 8 9bar", '->@* interpolated w/other stuff'; is "foo$_->@[0,1]bar", "foo7 8bar", '->@[ interpolated w/other stuff'; is "foo$_->@{foo}bar", "foooofbar", '->@{ interpolated w/other stuff'; is "@{[foo->@*]}", "7 8 9", '->@* inside "@{...}"'; is "@{[foo->@[0,1]]}", "7 8", '->@[ inside "@{...}"'; is "@{[foo->@{foo}]}", "oof", '->@{ inside "@{...}"'; }