Update: I assuming from your typically terse description that you goal is to override the function of the built-in select only within the IO::Select module without overriding the select method it presents to its callers.
If that is not the case, perhaps you could clarify your requirements?
Yes. "CORE::GLOBAL::" is too aggressive.
Hm. The CORE::GLOBAL discussion is only a one part of the discussion referenced.
There is also use REGlob 'glob'; # override glob() in Foo:: only, amongst others.
But, to answer your specific problem, I'd suggest adding:
sub yourSelect { ... } sub select { local *CORE::GLOBAL::select = *yourSelect; shift if defined $_[0] && !ref($_[0]); my($r,$w,$e,$t) = @_; my @result = (); my $rb = defined $r ? $r->[VEC_BITS] : undef; my $wb = defined $w ? $w->[VEC_BITS] : undef; my $eb = defined $e ? $e->[VEC_BITS] : undef; if(select($rb,$wb,$eb,$t) > 0) ################################################ }
Wherever select is used in IO::Select. Make it conditional if appropriate.
In reply to Re^3: override CORE sub and keep method in same package (Updated)
by BrowserUk
in thread override CORE sub and keep method in same package
by bulk88
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |