1#!./perl -w 2 3# 4# test auto defined() test insertion 5# 6 7BEGIN { 8 chdir 't' if -d 't'; 9 @INC = qw(. ../lib); 10 $SIG{__WARN__} = sub { $warns++; warn $_[0] }; 11} 12require 'test.pl'; 13plan( tests => 19 ); 14 15my $unix_mode = 1; 16 17if ($^O eq 'VMS') { 18 # We have to know if VMS is in UNIX mode. In UNIX mode, trailing dots 19 # should not be present. There are actually two settings that control this. 20 21 $unix_mode = 0; 22 my $unix_rpt = 0; 23 my $drop_dot = 0; 24 if (eval 'require VMS::Feature') { 25 $unix_rpt = VMS::Feature::current('filename_unix_report'); 26 $drop_dot = VMS::Feature::current('readdir_dropdotnotype'); 27 } else { 28 my $unix_report = $ENV{'DECC$FILENAME_UNIX_REPORT'} || ''; 29 $unix_rpt = $unix_report =~ /^[ET1]/i; 30 my $drop_dot_notype = $ENV{'DECC$READDIR_DROPDOTNOTYPE'} || ''; 31 $drop_dot = $drop_dot_notype =~ /^[ET1]/i; 32 } 33 $unix_mode = 1 if $drop_dot && unix_rpt; 34} 35 36$wanted_filename = $unix_mode ? '0' : '0.'; 37$saved_filename = './0'; 38 39cmp_ok($warns,'==',0,'no warns at start'); 40 41open(FILE,">$saved_filename"); 42ok(defined(FILE),'created work file'); 43print FILE "1\n"; 44print FILE "0"; 45close(FILE); 46 47open(FILE,"<$saved_filename"); 48ok(defined(FILE),'opened work file'); 49my $seen = 0; 50my $dummy; 51while (my $name = <FILE>) 52 { 53 $seen++ if $name eq '0'; 54 } 55cmp_ok($seen,'==',1,'seen in while()'); 56 57seek(FILE,0,0); 58$seen = 0; 59my $line = ''; 60do 61 { 62 $seen++ if $line eq '0'; 63 } while ($line = <FILE>); 64cmp_ok($seen,'==',1,'seen in do/while'); 65 66seek(FILE,0,0); 67$seen = 0; 68while (($seen ? $dummy : $name) = <FILE> ) 69 { 70 $seen++ if $name eq '0'; 71 } 72cmp_ok($seen,'==',1,'seen in while() ternary'); 73 74seek(FILE,0,0); 75$seen = 0; 76my %where; 77while ($where{$seen} = <FILE>) 78 { 79 $seen++ if $where{$seen} eq '0'; 80 } 81cmp_ok($seen,'==',1,'seen in hash while()'); 82close FILE; 83 84opendir(DIR,'.'); 85ok(defined(DIR),'opened current directory'); 86$seen = 0; 87while (my $name = readdir(DIR)) 88 { 89 $seen++ if $name eq $wanted_filename; 90 } 91cmp_ok($seen,'==',1,'saw work file once'); 92 93rewinddir(DIR); 94$seen = 0; 95$dummy = ''; 96while (($seen ? $dummy : $name) = readdir(DIR)) 97 { 98 $seen++ if $name eq $wanted_filename; 99 } 100cmp_ok($seen,'>',0,'saw file in while() ternary'); 101 102rewinddir(DIR); 103$seen = 0; 104while ($where{$seen} = readdir(DIR)) 105 { 106 $seen++ if $where{$seen} eq $wanted_filename; 107 } 108cmp_ok($seen,'==',1,'saw file in hash while()'); 109 110$seen = 0; 111while (my $name = glob('*')) 112 { 113 $seen++ if $name eq $wanted_filename; 114 } 115cmp_ok($seen,'==',1,'saw file in glob while()'); 116 117$seen = 0; 118$dummy = ''; 119while (($seen ? $dummy : $name) = glob('*')) 120 { 121 $seen++ if $name eq $wanted_filename; 122 } 123cmp_ok($seen,'>',0,'saw file in glob hash while() ternary'); 124 125$seen = 0; 126while ($where{$seen} = glob('*')) 127 { 128 $seen++ if $where{$seen} eq $wanted_filename; 129 } 130cmp_ok($seen,'==',1,'seen in glob hash while()'); 131 132unlink($saved_filename); 133ok(!(-f $saved_filename),'work file unlinked'); 134 135my %hash = (0 => 1, 1 => 2); 136 137$seen = 0; 138while (my $name = each %hash) 139 { 140 $seen++ if $name eq '0'; 141 } 142cmp_ok($seen,'==',1,'seen in each'); 143 144$seen = 0; 145$dummy = ''; 146while (($seen ? $dummy : $name) = each %hash) 147 { 148 $seen++ if $name eq '0'; 149 } 150cmp_ok($seen,'==',1,'seen in each ternary'); 151 152$seen = 0; 153while ($where{$seen} = each %hash) 154 { 155 $seen++ if $where{$seen} eq '0'; 156 } 157cmp_ok($seen,'==',1,'seen in each hash'); 158 159cmp_ok($warns,'==',0,'no warns at finish'); 160