1
我無法找到如何使用POE Wheel或任何異步過程創建和寫入文件的示例。我希望能夠以非阻塞的方式編寫大文件。我正在尋找示例,但不知道從哪裏開始。PERL POE ReadWrite Wheel文件IO示例?
我無法找到如何使用POE Wheel或任何異步過程創建和寫入文件的示例。我希望能夠以非阻塞的方式編寫大文件。我正在尋找示例,但不知道從哪裏開始。PERL POE ReadWrite Wheel文件IO示例?
所以,我沒有真正找到文件io的直接例子。但是,我設法從我找到的例子中找出這個工作代碼。我認爲這是我想要的。我在這裏添加它,所以如果任何人有任何意見,它可能會幫助我或其他改善它。或者,如果有人正在尋找一個例子,他們可以看到這個例子。
$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");
}
}
);
有很好的文檔可供選擇:http://search.cpan.org/~rcaputo/POE-1.354/lib/POE/Wheel/ReadWrite.pm – Matthias 2013-05-03 22:56:07
感謝。我檢查了一下,最終找出瞭如何去做。我在線程上發佈了我的結果代碼。您鏈接的文檔中的示例很好,但對於文件不太清楚。有一個例子引用了STDIN的閱讀材料,這是最終幫助我的那個。 – dudeman 2013-05-06 18:24:39