File: global.t

package info (click to toggle)
perl 5.42.0-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 128,392 kB
  • sloc: perl: 534,963; ansic: 240,563; sh: 72,042; pascal: 6,934; xml: 2,428; yacc: 1,360; makefile: 1,197; cpp: 208; lisp: 1
file content (94 lines) | stat: -rw-r--r-- 1,856 bytes parent folder | download
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!./perl

BEGIN {
    chdir 't' if -d 't';
    @INC = '../lib';
    require Config; Config->import;
    if ($Config{'extensions'} !~ /\bFile\/Glob\b/i) {
        print "1..0\n";
        exit 0;
    }
}

use Test::More tests => 11;

BEGIN {
    *CORE::GLOBAL::glob = sub { "Just another Perl hacker," };
}

BEGIN {
    if ("Just another Perl hacker," ne (<*>)[0]) {
        die <<EOMessage;
Your version of perl ($]) doesn't seem to allow extensions to override
the core glob operator.
EOMessage
    }
}

BEGIN {
    use_ok('File::Glob', ':globally');
}

$_ = "op/*.t";
my @r = glob;
is($_, "op/*.t", 'pattern intact after use of core glob function');

cmp_ok(scalar @r, '>=', 3, 'check if core glob function works');

@r = <*/*.t>;
# at least t/global.t t/basic.t, t/taint.t
cmp_ok(scalar @r, '>=', 3, 'check if <*/*> works');
my $r = scalar @r;

@r = ();
while (defined($_ = <*/*.t>)) {
  #print "# $_\n";
  push @r, $_;
}
is(scalar @r, $r, 'check if scalar context works');

@r = ();
for (<*/*.t>) {
  #print "# $_\n";
  push @r, $_;
}
is(scalar @r, $r, 'check if list context works');

@r = ();
while (<*/*.t>) {
  #print "# $_\n";
  push @r, $_;
}
is(scalar @r, $r, 'implicit assign to $_ in while()');

my @s = ();
while (glob('*/*.t')) {
    #print "# $_\n";
    push @s, $_;
}
is("@r", "@s", 'explicit glob() gets assign magic too');

package Foo;
use File::Glob ':globally';
@s = ();
while (glob('*/*.t')) {
    #print "# $_\n";
    push @s, $_;
}
main::is("@r", "@s", 'in a different package');

# test if different glob ops maintain independent contexts
@s = ();
my $i = 0;
while (<*/*.t>) {
  #print "# $_ <";
  push @s, $_;
  while (<bas*/*.t>) {
    #print " $_";
    $i++;
  }
  #print " >\n";
}

main::is("@r", "@s", 'different glob ops maintain independent contexts');
main::isnt($i, 0, 'different glob ops maintain independent contexts');