免费注册 查看新帖 |

Chinaunix

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

使用文件句柄的问题求教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-10 15:14 |只看该作者 |倒序浏览
现有POE中的两个event handler
sub EH1{
     open FILE, "HYQ.txt";
     $_[HEAP]->{'file'} = \*FILE;
}

sub EH2{
    my $filehandler = $_[HEAP]->{'file'};
    my $line = readline ($filehandler);
    print $line;
}

我在EH1中打开一个文件,并把其文件句柄的引用放到session的poe heap中,当执行另一个event handler时从poe heap中取出对这个文件句柄的引用,然后从中读出下一行数据。请问这样的模型可行否?我碰到的问题是从文件中读出了第一行数据以后,就开始报错:
Use of uninitialized value $filehandle in <HANDLE> at IntuitiveClient.pm line 70
.
readline() on unopened filehandle at IntuitiveClient.pm line 70.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2008-04-10 15:20 |只看该作者
可以的。注意执行时的顺序就可以了。

论坛徽章:
0
3 [报告]
发表于 2008-04-10 15:41 |只看该作者
请问“注意执行时的顺序”是什么意思?能具体解释一下吗?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2008-04-10 15:42 |只看该作者
原帖由 hyqgod 于 2008-4-10 15:41 发表
请问“注意执行时的顺序”是什么意思?能具体解释一下吗?

就是先执行哪个,后执行哪个。

论坛徽章:
0
5 [报告]
发表于 2008-04-10 15:57 |只看该作者
恩,这个我可以保证是先打开了文件,而且我都是文件里头的第一条记录都能读出来的。现在的问题是一旦读出来一条记录以后poe就给我的session发送_stop事件,然后关闭了我的session了,请问这有可能是什么原因导致的。具体的错误:
debug: _client_stop()
Can't call method "stomp" on an undefined value at IntuitiveClient.pm line 88, <$filehandle> line 3.

以上我分析就是因为先收到了_stop事件,然后关闭了,所以当调用$self->stomp->send()函数时就报错了

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2008-04-10 16:03 |只看该作者
stop 是因为没有别的事可以做了。
你需要好好了解一下 POE 框架。

读完一行之后,yield 一下吧。

论坛徽章:
0
7 [报告]
发表于 2008-04-10 16:20 |只看该作者
恩,可我其实在每次读完一行之后都有注册一个timer,代码如:
$kernel->alarm( updateReport => (time() + $self->config('Interval')));
这个保证了在interval秒之后会发出updateReport 事件

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2008-04-10 16:28 |只看该作者
别着急,试着自己把这些问题搞定,这才是学习的态度……

论坛徽章:
0
9 [报告]
发表于 2008-04-10 16:39 |只看该作者
发帖询问也是试着在解决问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP