143003dfeSmillert#!./perl 243003dfeSmillert 343003dfeSmillertBEGIN { 443003dfeSmillert chdir 't' if -d 't'; 5898184e3Ssthen @INC = '../lib'; 643003dfeSmillert require Config; import Config; 743003dfeSmillert if ($Config{'extensions'} !~ /\bFile\/Glob\b/i) { 843003dfeSmillert print "1..0\n"; 943003dfeSmillert exit 0; 1043003dfeSmillert } 1143003dfeSmillert} 12898184e3Ssthen 13898184e3Ssthenuse Test::More tests => 11; 1443003dfeSmillert 1543003dfeSmillertBEGIN { 1643003dfeSmillert *CORE::GLOBAL::glob = sub { "Just another Perl hacker," }; 1743003dfeSmillert} 1843003dfeSmillert 1943003dfeSmillertBEGIN { 2043003dfeSmillert if ("Just another Perl hacker," ne (<*>)[0]) { 2143003dfeSmillert die <<EOMessage; 2243003dfeSmillertYour version of perl ($]) doesn't seem to allow extensions to override 2343003dfeSmillertthe core glob operator. 2443003dfeSmillertEOMessage 2543003dfeSmillert } 2643003dfeSmillert} 2743003dfeSmillert 28898184e3SsthenBEGIN { 29898184e3Ssthen use_ok('File::Glob', ':globally'); 3043003dfeSmillert} 31898184e3Ssthen 32898184e3Ssthen$_ = "op/*.t"; 33898184e3Ssthenmy @r = glob; 34*5486feefSafresh1is($_, "op/*.t", 'pattern intact after use of core glob function'); 35898184e3Ssthen 36*5486feefSafresh1cmp_ok(scalar @r, '>=', 3, 'check if core glob function works'); 37898184e3Ssthen 38898184e3Ssthen@r = <*/*.t>; 3943003dfeSmillert# at least t/global.t t/basic.t, t/taint.t 40898184e3Ssthencmp_ok(scalar @r, '>=', 3, 'check if <*/*> works'); 4143003dfeSmillertmy $r = scalar @r; 4243003dfeSmillert 4343003dfeSmillert@r = (); 4443003dfeSmillertwhile (defined($_ = <*/*.t>)) { 4543003dfeSmillert #print "# $_\n"; 4643003dfeSmillert push @r, $_; 4743003dfeSmillert} 48898184e3Ssthenis(scalar @r, $r, 'check if scalar context works'); 4943003dfeSmillert 5043003dfeSmillert@r = (); 5143003dfeSmillertfor (<*/*.t>) { 5243003dfeSmillert #print "# $_\n"; 5343003dfeSmillert push @r, $_; 5443003dfeSmillert} 55898184e3Ssthenis(scalar @r, $r, 'check if list context works'); 5643003dfeSmillert 5743003dfeSmillert@r = (); 5843003dfeSmillertwhile (<*/*.t>) { 5943003dfeSmillert #print "# $_\n"; 6043003dfeSmillert push @r, $_; 6143003dfeSmillert} 62898184e3Ssthenis(scalar @r, $r, 'implicit assign to $_ in while()'); 6343003dfeSmillert 6443003dfeSmillertmy @s = (); 65898184e3Ssthenwhile (glob('*/*.t')) { 6643003dfeSmillert #print "# $_\n"; 6743003dfeSmillert push @s, $_; 6843003dfeSmillert} 69898184e3Ssthenis("@r", "@s", 'explicit glob() gets assign magic too'); 7043003dfeSmillert 7143003dfeSmillertpackage Foo; 7243003dfeSmillertuse File::Glob ':globally'; 7343003dfeSmillert@s = (); 74898184e3Ssthenwhile (glob('*/*.t')) { 7543003dfeSmillert #print "# $_\n"; 7643003dfeSmillert push @s, $_; 7743003dfeSmillert} 78898184e3Ssthenmain::is("@r", "@s", 'in a different package'); 7943003dfeSmillert 8043003dfeSmillert# test if different glob ops maintain independent contexts 8143003dfeSmillert@s = (); 8243003dfeSmillertmy $i = 0; 8343003dfeSmillertwhile (<*/*.t>) { 8443003dfeSmillert #print "# $_ <"; 8543003dfeSmillert push @s, $_; 8643003dfeSmillert while (<bas*/*.t>) { 8743003dfeSmillert #print " $_"; 8843003dfeSmillert $i++; 8943003dfeSmillert } 9043003dfeSmillert #print " >\n"; 9143003dfeSmillert} 92898184e3Ssthen 93898184e3Ssthenmain::is("@r", "@s", 'different glob ops maintain independent contexts'); 94898184e3Ssthenmain::isnt($i, 0, 'different glob ops maintain independent contexts'); 95