免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5742 | 回复: 3
打印 上一主题 下一主题

关于read函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-23 10:46 |只看该作者 |倒序浏览
文件内容:

程序
$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,怎么才能得到后面的结果?
多谢

论坛徽章:
0
2 [报告]
发表于 2005-05-23 22:18 |只看该作者

关于read函数

read 的第四个参数在非Unix平台下好象是不起作用的。。

论坛徽章:
0
3 [报告]
发表于 2005-05-24 11:21 |只看该作者

关于read函数

我现在Linux和Winxp下运行的结果和贴主的结果完全一样!
0123456789abcdefgh
01234
01256789
01256abcde

学无止境啊!

论坛徽章:
0
4 [报告]
发表于 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意思很特别哦!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP