1#!./perl 2 3BEGIN { 4 chdir 't' if -d 't'; 5 @INC = '../lib'; 6 require Config; import Config; 7 if ($Config{'extensions'} !~ /\bIO\b/ && $^O ne 'VMS') { 8 print "1..0\n"; 9 exit 0; 10 } 11} 12 13use FileHandle; 14use strict subs; 15 16autoflush STDOUT 1; 17 18$mystdout = new_from_fd FileHandle 1,"w"; 19$| = 1; 20autoflush $mystdout; 21print "1..12\n"; 22 23print $mystdout "ok ".fileno($mystdout)."\n"; 24 25$fh = (new FileHandle "./TEST", O_RDONLY 26 or new FileHandle "TEST", O_RDONLY) 27 and print "ok 2\n"; 28 29 30$buffer = <$fh>; 31print $buffer eq "#!./perl\n" ? "ok 3\n" : "not ok 3\n"; 32 33 34ungetc $fh ord 'A'; 35CORE::read($fh, $buf,1); 36print $buf eq 'A' ? "ok 4\n" : "not ok 4\n"; 37 38close $fh; 39 40$fh = new FileHandle; 41 42print "not " unless ($fh->open("< TEST") && <$fh> eq $buffer); 43print "ok 5\n"; 44 45$fh->seek(0,0); 46print "#possible mixed CRLF/LF in t/TEST\nnot " unless (<$fh> eq $buffer); 47print "ok 6\n"; 48 49$fh->seek(0,2); 50$line = <$fh>; 51print "not " if (defined($line) || !$fh->eof); 52print "ok 7\n"; 53 54print "not " unless ($fh->open("TEST","r") && !$fh->tell && $fh->close); 55print "ok 8\n"; 56 57autoflush STDOUT 0; 58 59print "not " if ($|); 60print "ok 9\n"; 61 62autoflush STDOUT 1; 63 64print "not " unless ($|); 65print "ok 10\n"; 66 67if ($^O eq 'dos') 68{ 69 printf("ok %d\n",11); 70 exit(0); 71} 72 73($rd,$wr) = FileHandle::pipe; 74 75if ($^O eq 'VMS' || $^O eq 'os2' || $^O eq 'amigaos' || $^O eq 'MSWin32' || $^O eq 'NetWare' || 76 $Config{d_fork} ne 'define') { 77 $wr->autoflush; 78 $wr->printf("ok %d\n",11); 79 print $rd->getline; 80} 81else { 82 if (fork) { 83 $wr->close; 84 print $rd->getline; 85 } 86 else { 87 $rd->close; 88 $wr->printf("ok %d\n",11); 89 exit(0); 90 } 91} 92 93print FileHandle->new('','r') ? "not ok 12\n" : "ok 12\n"; 94