AnyEventの練習
噂のsleepsort書いてみた。AnyEvent->timer の戻り値捨てると動かないんだなぁとか。
#!/usr/bin/env perl use strict; use warnings; use Data::Dumper; use AnyEvent; sub sleepsort { my (@args) = @_; my $cv = AnyEvent->condvar; my (@sorted, @timers); for my $arg (@args) { $cv->begin; push @timers, AnyEvent->timer( after => $arg / 10, cb => sub { push @sorted, $arg; $cv->end; }, ); } $cv->recv; \@sorted; } print Dumper sleepsort(@ARGV);