В продолжение темы, кусочек реального кода из MuEvent:
#= Add an IO::Socket to observe
our sub socket(:&cb!, :$socket!, :$poll where 'r'|'w', :%params) {
my $p = $poll eq 'r' ?? 1 !! 2;
@sockets.push: {
:$socket, :poll($p), :&cb,
:%params,
keep => 1
};
}
Семантика конечно хорошо, но по-моему это уже слишком.