• 締切済み

POE

動的に対象のファイルを変えたいのですが。。。 while(1){ &test($file); } sub test { POE::Session->create( inline_states => { _start => \\&setup, handler_input => \\&handler_input, _stop => \\&handler_stop, }, args => [ $file ], ); POE::Kernel->run; exit; } sub setup{ my ( $heap, $target_file_path_now ) = @_[HEAP, ARG0]; $heap->{tail_wheel} = POE::Wheel::FollowTail->new( Filename => $ile, InputEvent => \'handler_input\', ); return; } sub handler_input{ my $record = $_[ARG0]; print $record,\"\\n\";} } $th->join;

みんなの回答

回答No.1

handler_inputサブルーチンの中で、  $_[HEAP]->{tail_wheel} = POE::Wheel::FollowTail->new(   Filename => $_[ARG0],   InputEvent => 'handler_input',  ); とすれば、FollowTailが拾ってきた文字列に応じて、読み込み対象のファイルを変更できるはずです。 (ネストを表現するため、上記ソースには全角スペースが入っています。) ここから以下、蛇足。 グローバル変数$fileは、my宣言したほうが良いです。 あと、testサブルーチンの最後でexitしてますので、この場合whileは意味をなさないですね。 それから、POE::Kernel->_stopが叩かれない限り、その先へは進みませんので、やはりwhileループ自体不要です。直接mainで&test($file)として問題ないです。 # つい、気になったので。失礼しました。

関連するQ&A