This file is indexed.

/usr/share/doc/libscope-upper-perl/examples/bench_uplevel.pl is in libscope-upper-perl 0.24-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/perl

use strict;
use warnings;

use blib;

use Benchmark qw<cmpthese>;

use Scope::Upper qw<:words>;
BEGIN { *uplevel_xs = \&Scope::Upper::uplevel }

use Sub::Uplevel;
BEGIN { *uplevel_pp = \&Sub::Uplevel::uplevel }

sub void { }

sub foo_t  { void { } }

sub foo_pp { uplevel_pp(0, sub { }) }

sub foo_xs { uplevel_xs { } }

print "\nuplevel to current scope:\n";
cmpthese -1, {
 tare => sub { foo_t() },
 pp   => sub { foo_pp() },
 xs   => sub { foo_xs() },
};

sub bar_1_t  { bar_2_t() }
sub bar_2_t  { void() }

sub bar_1_pp { bar_2_pp() }
sub bar_2_pp { uplevel_pp(1, sub { }) }

sub bar_1_xs { bar_2_xs() }
sub bar_2_xs { uplevel_xs { } UP }

print "\nuplevel to one scope above:\n";
cmpthese -1, {
 tare => sub { bar_2_t() },
 pp   => sub { bar_2_pp() },
 xs   => sub { bar_2_xs() },
};

sub hundred { 1 .. 100 }

sub baz_t  { hundred() }

sub baz_pp { uplevel_pp(0, sub { 1 .. 100 }) }

sub baz_xs { uplevel_xs { 1 .. 100 } }

print "\nreturning 100 values:\n";
cmpthese -1, {
 tare => sub { my @r = baz_t() },
 pp   => sub { my @r = baz_pp() },
 xs   => sub { my @r = baz_xs() },
};

my $n = 10_000;
my $tare_code = "sub { my \@c; \@c = caller(0) for 1 .. $n }->()";

print "\ncaller() slowdown:\n";
cmpthese 30, {
 tare => sub { system { $^X } $^X, '-e', "use blib; use List::Util; $tare_code" },
 pp   => sub { system { $^X } $^X, '-e', "use blib; use Sub::Uplevel; $tare_code" },
 xs   => sub { system { $^X } $^X, '-e', "use blib; use Scope::Upper; $tare_code" },
}