Coroの初歩的なハマリどころ

時代は、Coroだ!AnyEventだ!ということで、

あたりを読みながらお勉強しているときに、ちょいハマった。

use strict;
use warnings;
use Coro;
use Perl6::Say;

async {
    say 'hello';
}
cede;

このスクリプトを動かすと、hello と出力されるはず、なのに何も表示されない。こんな単純なコードなのに、なぜだー!と思ってよく見たら、 async の最後のセミコロンが抜けてた・・・

これなら動く。

use strict;
use warnings;
use Coro;
use Perl6::Say;

async {
    say 'hello';
};
cede;

でも何で構文エラーにならないんでしょう?async は

async {
    print "@_\n";
} 1,2,3,4;

というように、引数を受け取ることができるので、もしかして cede が引数として渡されてる?と思ったけど、

async {
    say @_;
}
cede;
cede;

とやっても cede とは出力されない。Coroのコードを読んでも良くわからなかった。何で・・・??

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>