my ($rready, $wready) = $sel->can([TIMEOUT]); #### my ($rready, $wready) = $sel->select([TIMEOUT]); #### - shift - if defined $_[0] && !ref($_[0]); - - my($r,$w,$e,$t) = @_; + my($r,$w,$e,$t); + if (defined $_[0] && !ref($_[0])) { # called as a static method + shift; + ($r,$w,$e,$t) = @_; + } elsif (@_ == 1 || @_ == 2 && !ref($_[1])) { # called as $sel->select() or $sel->select($timeout) + $r=$w=$e=$_[0]; + $t=$_[1]; + } else { # called as IO::Select::select(...) + ($r,$w,$e,$t) = @_; + }