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 # We have the following types of loop: # # 1a) while(A) {B} # 1b) B while A; # # 2a) until(A) {B} # 2b) B until A; # # 3a) for(@A) {B} # 3b) B for A; # # 4a) for (A;B;C) {D} # # 5a) { A } # a bare block is a loop which runs once # # Loops of type (b) don't allow for next/last/redo style # control, so we ignore them here. Type (a) loops can # all be labelled, so there are ten possibilities (each # of 5 types, labelled/unlabelled). We therefore need # thirty tests to try the three control statements against # the ten types of loop. For the first four types it's useful # to distinguish the case where next re-iterates from the case # where it leaves the loop. That makes 38. # All these tests rely on "last LABEL" # so if they've *all* failed, maybe you broke that... # # These tests are followed by an extra test of nested loops. # Feel free to add more here. # # -- .robin. <robin@kitsite.com> 2001-03-13 BEGIN { chdir 't' if -d 't'; @INC = qw(. ../lib); require "test.pl"; } plan( tests => 67 ); my $ok; TEST1: { $ok = 0; my $x = 1; my $first_time = 1; while($x--) { if (!$first_time) { $ok = 1; last TEST1; } $ok = 0; $first_time = 0; redo; last TEST1; } continue { $ok = 0; last TEST1; } $ok = 0; } cmp_ok($ok,'==',1,'no label on while()'); TEST2: { $ok = 0; my $x = 2; my $first_time = 1; my $been_in_continue = 0; while($x--) { if (!$first_time) { $ok = $been_in_continue; last TEST2; } $ok = 0; $first_time = 0; next; last TEST2; } continue { $been_in_continue = 1; } $ok = 0; } cmp_ok($ok,'==',1,'no label on while() successful next'); TEST3: { $ok = 0; my $x = 1; my $first_time = 1; my $been_in_loop = 0; my $been_in_continue = 0; while($x--) { $been_in_loop = 1; if (!$first_time) { $ok = 0; last TEST3; } $ok = 0; $first_time = 0; next; last TEST3; } continue { $been_in_continue = 1; } $ok = $been_in_loop && $been_in_continue; } cmp_ok($ok,'==',1,'no label on while() unsuccessful next'); TEST4: { $ok = 0; my $x = 1; my $first_time = 1; while($x++) { if (!$first_time) { $ok = 0; last TEST4; } $ok = 0; $first_time = 0; last; last TEST4; } continue { $ok = 0; last TEST4; } $ok = 1; } cmp_ok($ok,'==',1,'no label on while() last'); TEST5: { $ok = 0; my $x = 0; my $first_time = 1; until($x++) { if (!$first_time) { $ok = 1; last TEST5; } $ok = 0; $first_time = 0; redo; last TEST5; } continue { $ok = 0; last TEST5; } $ok = 0; } cmp_ok($ok,'==',1,'no label on until()'); TEST6: { $ok = 0; my $x = 0; my $first_time = 1; my $been_in_continue = 0; until($x++ >= 2) { if (!$first_time) { $ok = $been_in_continue; last TEST6; } $ok = 0; $first_time = 0; next; last TEST6; } continue { $been_in_continue = 1; } $ok = 0; } cmp_ok($ok,'==',1,'no label on until() successful next'); TEST7: { $ok = 0; my $x = 0; my $first_time = 1; my $been_in_loop = 0; my $been_in_continue = 0; until($x++) { $been_in_loop = 1; if (!$first_time) { $ok = 0; last TEST7; } $ok = 0; $first_time = 0; next; last TEST7; } continue { $been_in_continue = 1; } $ok = $been_in_loop && $been_in_continue; } cmp_ok($ok,'==',1,'no label on until() unsuccessful next'); TEST8: { $ok = 0; my $x = 0; my $first_time = 1; until($x++ == 10) { if (!$first_time) { $ok = 0; last TEST8; } $ok = 0; $first_time = 0; last; last TEST8; } continue { $ok = 0; last TEST8; } $ok = 1; } cmp_ok($ok,'==',1,'no label on until() last'); TEST9: { $ok = 0; my $first_time = 1; for(1) { if (!$first_time) { $ok = 1; last TEST9; } $ok = 0; $first_time = 0; redo; last TEST9; } continue { $ok = 0; last TEST9; } $ok = 0; } cmp_ok($ok,'==',1,'no label on for(@array)'); TEST10: { $ok = 0; my $first_time = 1; my $been_in_continue = 0; for(1,2) { if (!$first_time) { $ok = $been_in_continue; last TEST10; } $ok = 0; $first_time = 0; next; last TEST10; } continue { $been_in_continue = 1; } $ok = 0; } cmp_ok($ok,'==',1,'no label on for(@array) successful next'); TEST11: { $ok = 0; my $first_time = 1; my $been_in_loop = 0; my $been_in_continue = 0; for(1) { $been_in_loop = 1; if (!$first_time) { $ok = 0; last TEST11; } $ok = 0; $first_time = 0; next; last TEST11; } continue { $been_in_continue = 1; } $ok = $been_in_loop && $been_in_continue; } cmp_ok($ok,'==',1,'no label on for(@array) unsuccessful next'); TEST12: { $ok = 0; my $first_time = 1; for(1..10) { if (!$first_time) { $ok = 0; last TEST12; } $ok = 0; $first_time = 0; last; last TEST12; } continue { $ok=0; last TEST12; } $ok = 1; } cmp_ok($ok,'==',1,'no label on for(@array) last'); TEST13: { $ok = 0; for(my $first_time = 1; 1;) { if (!$first_time) { $ok = 1; last TEST13; } $ok = 0; $first_time=0; redo; last TEST13; } $ok = 0; } cmp_ok($ok,'==',1,'no label on for(;;)'); TEST14: { $ok = 0; for(my $first_time = 1; 1; $first_time=0) { if (!$first_time) { $ok = 1; last TEST14; } $ok = 0; next; last TEST14; } $ok = 0; } cmp_ok($ok,'==',1,'no label on for(;;) successful next'); TEST15: { $ok = 0; my $x=1; my $been_in_loop = 0; for(my $first_time = 1; $x--;) { $been_in_loop = 1; if (!$first_time) { $ok = 0; last TEST15; } $ok = 0; $first_time = 0; next; last TEST15; } $ok = $been_in_loop; } cmp_ok($ok,'==',1,'no label on for(;;) unsuccessful next'); TEST16: { $ok = 0; for(my $first_time = 1; 1; last TEST16) { if (!$first_time) { $ok = 0; last TEST16; } $ok = 0; $first_time = 0; last; last TEST16; } $ok = 1; } cmp_ok($ok,'==',1,'no label on for(;;) last'); TEST17: { $ok = 0; my $first_time = 1; { if (!$first_time) { $ok = 1; last TEST17; } $ok = 0; $first_time=0; redo; last TEST17; } continue { $ok = 0; last TEST17; } $ok = 0; } cmp_ok($ok,'==',1,'no label on bare block'); TEST18: { $ok = 0; { next; last TEST18; } continue { $ok = 1; last TEST18; } $ok = 0; } cmp_ok($ok,'==',1,'no label on bare block next'); TEST19: { $ok = 0; { last; last TEST19; } continue { $ok = 0; last TEST19; } $ok = 1; } cmp_ok($ok,'==',1,'no label on bare block last'); ### Now do it all again with labels TEST20: { $ok = 0; my $x = 1; my $first_time = 1; LABEL20: while($x--) { if (!$first_time) { $ok = 1; last TEST20; } $ok = 0; $first_time = 0; redo LABEL20; last TEST20; } continue { $ok = 0; last TEST20; } $ok = 0; } cmp_ok($ok,'==',1,'label on while()'); TEST21: { $ok = 0; my $x = 2; my $first_time = 1; my $been_in_continue = 0; LABEL21: while($x--) { if (!$first_time) { $ok = $been_in_continue; last TEST21; } $ok = 0; $first_time = 0; next LABEL21; last TEST21; } continue { $been_in_continue = 1; } $ok = 0; } cmp_ok($ok,'==',1,'label on while() successful next'); TEST22: { $ok = 0; my $x = 1; my $first_time = 1; my $been_in_loop = 0; my $been_in_continue = 0; LABEL22: while($x--) { $been_in_loop = 1; if (!$first_time) { $ok = 0; last TEST22; } $ok = 0; $first_time = 0; next LABEL22; last TEST22; } continue { $been_in_continue = 1; } $ok = $been_in_loop && $been_in_continue; } cmp_ok($ok,'==',1,'label on while() unsuccessful next'); TEST23: { $ok = 0; my $x = 1; my $first_time = 1; LABEL23: while($x++) { if (!$first_time) { $ok = 0; last TEST23; } $ok = 0; $first_time = 0; last LABEL23; last TEST23; } continue { $ok = 0; last TEST23; } $ok = 1; } cmp_ok($ok,'==',1,'label on while() last'); TEST24: { $ok = 0; my $x = 0; my $first_time = 1; LABEL24: until($x++) { if (!$first_time) { $ok = 1; last TEST24; } $ok = 0; $first_time = 0; redo LABEL24; last TEST24; } continue { $ok = 0; last TEST24; } $ok = 0; } cmp_ok($ok,'==',1,'label on until()'); TEST25: { $ok = 0; my $x = 0; my $first_time = 1; my $been_in_continue = 0; LABEL25: until($x++ >= 2) { if (!$first_time) { $ok = $been_in_continue; last TEST25; } $ok = 0; $first_time = 0; next LABEL25; last TEST25; } continue { $been_in_continue = 1; } $ok = 0; } cmp_ok($ok,'==',1,'label on until() successful next'); TEST26: { $ok = 0; my $x = 0; my $first_time = 1; my $been_in_loop = 0; my $been_in_continue = 0; LABEL26: until($x++) { $been_in_loop = 1; if (!$first_time) { $ok = 0; last TEST26; } $ok = 0; $first_time = 0; next LABEL26; last TEST26; } continue { $been_in_continue = 1; } $ok = $been_in_loop && $been_in_continue; } cmp_ok($ok,'==',1,'label on until() unsuccessful next'); TEST27: { $ok = 0; my $x = 0; my $first_time = 1; LABEL27: until($x++ == 10) { if (!$first_time) { $ok = 0; last TEST27; } $ok = 0; $first_time = 0; last LABEL27; last TEST27; } continue { $ok = 0; last TEST8; } $ok = 1; } cmp_ok($ok,'==',1,'label on until() last'); TEST28: { $ok = 0; my $first_time = 1; LABEL28: for(1) { if (!$first_time) { $ok = 1; last TEST28; } $ok = 0; $first_time = 0; redo LABEL28; last TEST28; } continue { $ok = 0; last TEST28; } $ok = 0; } cmp_ok($ok,'==',1,'label on for(@array)'); TEST29: { $ok = 0; my $first_time = 1; my $been_in_continue = 0; LABEL29: for(1,2) { if (!$first_time) { $ok = $been_in_continue; last TEST29; } $ok = 0; $first_time = 0; next LABEL29; last TEST29; } continue { $been_in_continue = 1; } $ok = 0; } cmp_ok($ok,'==',1,'label on for(@array) successful next'); TEST30: { $ok = 0; my $first_time = 1; my $been_in_loop = 0; my $been_in_continue = 0; LABEL30: for(1) { $been_in_loop = 1; if (!$first_time) { $ok = 0; last TEST30; } $ok = 0; $first_time = 0; next LABEL30; last TEST30; } continue { $been_in_continue = 1; } $ok = $been_in_loop && $been_in_continue; } cmp_ok($ok,'==',1,'label on for(@array) unsuccessful next'); TEST31: { $ok = 0; my $first_time = 1; LABEL31: for(1..10) { if (!$first_time) { $ok = 0; last TEST31; } $ok = 0; $first_time = 0; last LABEL31; last TEST31; } continue { $ok=0; last TEST31; } $ok = 1; } cmp_ok($ok,'==',1,'label on for(@array) last'); TEST32: { $ok = 0; LABEL32: for(my $first_time = 1; 1;) { if (!$first_time) { $ok = 1; last TEST32; } $ok = 0; $first_time=0; redo LABEL32; last TEST32; } $ok = 0; } cmp_ok($ok,'==',1,'label on for(;;)'); TEST33: { $ok = 0; LABEL33: for(my $first_time = 1; 1; $first_time=0) { if (!$first_time) { $ok = 1; last TEST33; } $ok = 0; next LABEL33; last TEST33; } $ok = 0; } cmp_ok($ok,'==',1,'label on for(;;) successful next'); TEST34: { $ok = 0; my $x=1; my $been_in_loop = 0; LABEL34: for(my $first_time = 1; $x--;) { $been_in_loop = 1; if (!$first_time) { $ok = 0; last TEST34; } $ok = 0; $first_time = 0; next LABEL34; last TEST34; } $ok = $been_in_loop; } cmp_ok($ok,'==',1,'label on for(;;) unsuccessful next'); TEST35: { $ok = 0; LABEL35: for(my $first_time = 1; 1; last TEST16) { if (!$first_time) { $ok = 0; last TEST35; } $ok = 0; $first_time = 0; last LABEL35; last TEST35; } $ok = 1; } cmp_ok($ok,'==',1,'label on for(;;) last'); TEST36: { $ok = 0; my $first_time = 1; LABEL36: { if (!$first_time) { $ok = 1; last TEST36; } $ok = 0; $first_time=0; redo LABEL36; last TEST36; } continue { $ok = 0; last TEST36; } $ok = 0; } cmp_ok($ok,'==',1,'label on bare block'); TEST37: { $ok = 0; LABEL37: { next LABEL37; last TEST37; } continue { $ok = 1; last TEST37; } $ok = 0; } cmp_ok($ok,'==',1,'label on bare block next'); TEST38: { $ok = 0; LABEL38: { last LABEL38; last TEST38; } continue { $ok = 0; last TEST38; } $ok = 1; } cmp_ok($ok,'==',1,'label on bare block last'); TEST39: { $ok = 0; my ($x, $y, $z) = (1,1,1); one39: while ($x--) { $ok = 0; two39: while ($y--) { $ok = 0; three39: while ($z--) { next two39; } continue { $ok = 0; last TEST39; } } continue { $ok = 1; last TEST39; } $ok = 0; } } cmp_ok($ok,'==',1,'nested constructs'); sub test_last_label { last TEST40 } TEST40: { $ok = 1; test_last_label(); $ok = 0; } cmp_ok($ok,'==',1,'dynamically scoped label'); sub test_last { last } TEST41: { $ok = 1; test_last(); $ok = 0; } cmp_ok($ok,'==',1,'dynamically scoped'); # [perl #27206] Memory leak in continue loop # Ensure that the temporary object is freed each time round the loop, # rather then all 10 of them all being freed right at the end { my $n=10; my $late_free = 0; sub X::DESTROY { $late_free++ if $n < 0 }; { ($n-- && bless {}, 'X') && redo; } cmp_ok($late_free,'==',0,"bug 27206: redo memory leak"); $n = 10; $late_free = 0; { ($n-- && bless {}, 'X') && redo; } continue { } cmp_ok($late_free,'==',0,"bug 27206: redo with continue memory leak"); } # ensure that redo doesn't clear a lexical declared in the condition { my $i = 1; while (my $x = $i) { $i++; redo if $i == 2; cmp_ok($x,'==',1,"while/redo lexical life"); last; } $i = 1; until (! (my $x = $i)) { $i++; redo if $i == 2; cmp_ok($x,'==',1,"until/redo lexical life"); last; } for ($i = 1; my $x = $i; ) { $i++; redo if $i == 2; cmp_ok($x,'==',1,"for/redo lexical life"); last; } } { $a37725[3] = 1; # use package var $i = 2; for my $x (reverse @a37725) { $x = $i++; } cmp_ok("@a37725",'eq',"5 4 3 2",'bug 27725: reverse with empty slots bug'); } # [perl #21469] bad things happened with for $x (...) { *x = *y } { my $i = 1; $x_21469 = 'X'; $y1_21469 = 'Y1'; $y2_21469 = 'Y2'; $y3_21469 = 'Y3'; for $x_21469 (1,2,3) { is($x_21469, $i, "bug 21469: correct at start of loop $i"); *x_21469 = (*y1_21469, *y2_21469, *y3_21469)[$i-1]; is($x_21469, "Y$i", "bug 21469: correct at tail of loop $i"); $i++; } is($x_21469, 'X', "bug 21469: X okay at end of loop"); } # [perl #112316] Wrong behavior regarding labels with same prefix { my $fail; CATCH: { CATCHLOOP: { last CATCH; } $fail = 1; } ok(!$fail, "perl 112316: Labels with the same prefix don't get mixed up."); } # [perl #73618] { sub foo_73618_0 { while (0) { } } sub bar_73618_0 { my $i = 0; while ($i) { } } sub foo_73618_undef { while (undef) { } } sub bar_73618_undef { my $i = undef; while ($i) { } } sub foo_73618_emptystring { while ("") { } } sub bar_73618_emptystring { my $i = ""; while ($i) { } } sub foo_73618_0float { while (0.0) { } } sub bar_73618_0float { my $i = 0.0; while ($i) { } } sub foo_73618_0string { while ("0") { } } sub bar_73618_0string { my $i = "0"; while ($i) { } } sub foo_73618_until { until (1) { } } sub bar_73618_until { my $i = 1; until ($i) { } } is(scalar(foo_73618_0()), scalar(bar_73618_0()), "constant optimization doesn't change return value"); is(scalar(foo_73618_undef()), scalar(bar_73618_undef()), "constant optimization doesn't change return value"); is(scalar(foo_73618_emptystring()), scalar(bar_73618_emptystring()), "constant optimization doesn't change return value"); is(scalar(foo_73618_0float()), scalar(bar_73618_0float()), "constant optimization doesn't change return value"); is(scalar(foo_73618_0string()), scalar(bar_73618_0string()), "constant optimization doesn't change return value"); { local $TODO = "until is still wrongly optimized"; is(scalar(foo_73618_until()), scalar(bar_73618_until()), "constant optimization doesn't change return value"); } } # [perl #113684] last_113684: { label1: { my $label = "label1"; eval { last $label }; fail("last with non-constant label"); last last_113684; } pass("last with non-constant label"); } next_113684: { label2: { my $label = "label2"; eval { next $label }; fail("next with non-constant label"); next next_113684; } pass("next with non-constant label"); } redo_113684: { my $count; label3: { if ($count++) { pass("redo with non-constant label"); last redo_113684 } my $label = "label3"; eval { redo $label }; fail("redo with non-constant label"); } } # [perl #3112] # The original report, which produced a Bizarre copy @a = (); eval { for (1) { push @a, last; } }; is @a, 0, 'push @a, last; does not push'; is $@, "", 'no error, either'; # And my japh, which relied on the misbehaviour is do{{&{sub{"Just another Perl hacker,\n"}},last}}, undef, 'last returns nothing';