11 is(reverse("abc"), "cba", 'simple reverse');
14 is(reverse(), "raboof", 'reverse of the default variable');
17 my @a = ("foo", "bar");
20 is($b[0], $a[1], 'array reversal moved second element to first');
21 is($b[1], $a[0], 'array reversal moved first element to second');
27 is("@a", "4 3 2 1", 'four element array reversed');
31 ok(!exists $a[2], 'array reversed with deleted second element');
32 is($a[0] . $a[1] . $a[3], '124', 'remaining elements ok after delete and reverse');
36 is("@a", "9 8 7 6 5", 'five element array reversed');
40 ok(!exists $a[1], 'five element array reversed with deleted fourth element');
41 is($a[0] . $a[2] . $a[3] . $a[4], '5789', 'remaining elements ok after delete and reverse');
45 ok(!exists $a[2] && !exists $a[3], 'test position of two deleted elements after reversal');
46 is($a[0] . $a[1] . $a[4], '985', 'check value of remaining elements');
49 @empty = reverse @empty;
50 is("@empty", "", 'reversed empty array is still empty');
56 tie my @a, 'Tie::StdArray';
60 is("@a", "4 3 2 1", 'tie array reversal');
64 ok(!exists $a[2], 'deleted element position ok after reversal of tie array');
65 is($a[0] . $a[1] . $a[3], '124', 'remaining elements ok after delete and reversal for tie array');
69 is("@a", "9 8 7 6 5", 'five element tie array reversal');
73 ok(!exists $a[1], 'deleted element position ok after tie array reversal');
74 is($a[0] . $a[2] . $a[3] . $a[4], '5789', 'remaining elements ok after tie array delete and reversal');
78 ok(!exists $a[2] && !exists $a[3], 'two deleted element positions ok after tie array reversal');
79 is($a[0] . $a[1] . $a[4], '985', 'remaining elements ok after two deletes and reversals');
81 tie my @empty, "Tie::StdArray";
82 @empty = reverse @empty;
83 is(scalar(@empty), 0, 'reversed tie array still empty after reversal');
89 my $a = "\x{263A}\x{263A}x\x{263A}y\x{263A}";
90 my $b = scalar reverse($a);
91 my $c = scalar reverse($b);
92 is($a, $c, 'Unicode string double reversal matches original');
97 no warnings 'experimental::lexical_topic';
98 sub blurp { my $_ = shift; reverse }
100 is(blurp("foo"), "oof", 'reversal of default variable in function');
101 is(sub { my $_ = shift; reverse }->("bar"), "rab", 'reversal of default variable in anonymous function');
104 is(blurp("paz"), "zap", 'reversal of default variable with local value set' );