首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PERL POE ReadWrite轮文件IO示例?

PERL POE ReadWrite轮文件IO示例?
EN

Stack Overflow用户
提问于 2013-05-04 06:10:20
回答 1查看 358关注 0票数 1

我很难找到一个如何使用POE Wheel或其他异步进程创建和写入文件的示例。我希望能够以非阻塞的方式写入大文件。我正在寻找示例,但不知道从哪里开始。

EN

回答 1

Stack Overflow用户

发布于 2013-05-07 02:17:08

所以,我真的没有找到文件io的简单示例。但是,我设法从我找到的示例中找出了这个工作代码。我想这就是我想要的。我在这里添加它,所以如果任何人有任何意见,它可能会帮助我或其他人改进它。或者,如果其他人正在寻找一个示例,他们可以看到这个示例。

代码语言:javascript
复制
                $self->{FILEIO_SESSION} = POE::Session->create(
                inline_states => {
                    _start => sub {
                        my ( $kernel, $heap ) = @_[ KERNEL, HEAP ];
                        $kernel->alias_set($fileio_uuid);

                        $heap->{wheels}->{$fileio_uuid} = POE::Wheel::ReadWrite->new(
                            InputHandle => $infile_fh ,
                            OutputHandle => $outfile_fh,
                            Driver => POE::Driver::SysRW->new(),
                            Filter => POE::Filter::Line->new(),
                            InputEvent => 'readLineEvent',
                            ErrorEvent => 'errorEvent'
                        );
                    },
                    _stop => sub {
                        my ( $kernel, $heap ) = @_[ KERNEL, HEAP ];
                        print "Removing fileio session\n";
                        $kernel->alias_remove($fileio_uuid);
                    },
                    readLineEvent => sub {
                        my ( $kernel, $heap, $input ) = @_[ KERNEL, HEAP, ARG0 ];
                        print "read a line...writing to file...\n";
                        $heap->{wheels}->{$fileio_uuid}->put($input);
                    },
                    errorEvent => sub {
                        my ( $kernel, $heap ) = @_[ KERNEL, HEAP ];
                        print "Everything either went to hell or we got to the end.  Shutting down...\n";
                        delete $heap->{wheels}->{$fileio_uuid};
                        $kernel->yield("_stop");
                    }
                }
            );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16368310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档