Chinaunix

标题: 关于read函数 [打印本页]

作者: xuexi11    时间: 2005-05-23 10:46
标题: 关于read函数
文件内容:

程序
$line=<FILE>;;print$line,"\n" ;
seek(FILE,0,0);
read(FILE,$seq,5,0);  print $seq,"\n";

read(FILE,$seq,5,3);  print $seq,"\n";
read(FILE,$seq,5,-3);  print $seq,"\n";
结果:
0123456789abcdefgh
01234
01256789
01256abcde

我认为应该是
0123456789abcdefgh
01234                (前5个)
89abc                 (跳过3个,读5个)
abcdef                (倒退3个,读5个)

我用的winxp,怎么才能得到后面的结果?
多谢
作者: Osment    时间: 2005-05-23 22:18
标题: 关于read函数
read 的第四个参数在非Unix平台下好象是不起作用的。。
作者: luo1110    时间: 2005-05-24 11:21
标题: 关于read函数
我现在Linux和Winxp下运行的结果和贴主的结果完全一样!
0123456789abcdefgh
01234
01256789
01256abcde

学无止境啊!
作者: luo1110    时间: 2005-05-24 12:01
标题: 关于read函数
我知道了。
read
Syntax
Category  list operator (i/o)
Arguments  handle, variable, length, offset
Arguments  handle, variable, length
Return Value  1 (true) '' (false)

Definition
Reads length bytes from file handle into variable (starting at offset if specified). It returns the number of bytes actually read.

你们看以下程序的运行结果
open(FILE,"< test.txt" ||  die("error";
$line=<FILE>;;print$line,"\n" ;
seek(FILE,0,0);
#read(FILE,$seq,5);  print $seq,"\n";
#read(FILE,$seq,5);  print $seq,"\n";

read(FILE,$seq1,5,0);  print $seq1,"\n";

read(FILE,$seq2,5,3);  print $seq2,"\n";
read(FILE,$seq2,5,-3);  print $seq2,"\n";
read(FILE,$seq3,5,-3);  print $seq3,"\n";

close(FILE);
#0123456789abcdefgh

结果为
0123456789abcdefgh
01234
       56789
       56abcde
Offset outside string at 2.pl line 11,<FILE>; line 1.

看来第四个参数的offset意思很特别哦!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2