Yes. "CORE::GLOBAL::" is too aggressive. It is process wide supposedly. | [reply] |
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.
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
| [reply] [d/l] [select] |
You guessed right. Unfortunately I have to change something in the existing method subs, for all the solutions presented here. So I might as well just replace all calls to builtin select in each method with a select2 I defined. Checking if the first arg is blessed is another solution which probably would have been cleaner then putting select2 everywhere.
| [reply] |