my system details OS:Debian GNU/Linux 4.0 Kernel:2.6.18-4-686 GNU/Linux Perl: 5.8.8 #### $ locate Select.pm /usr/lib/perl/5.8.8/IO/Select.pm /usr/share/perl/5.8.8/Pod/Select.pm /usr/share/perl5/Debconf/AutoSelect.pm /usr/share/perl5/Debconf/Element/Dialog/Select.pm /usr/share/perl5/Debconf/Element/Editor/Select.pm /usr/share/perl5/Debconf/Element/Gnome/Select.pm /usr/share/perl5/Debconf/Element/Kde/Select.pm /usr/share/perl5/Debconf/Element/Noninteractive/Select.pm /usr/share/perl5/Debconf/Element/Select.pm /usr/share/perl5/Debconf/Element/Teletype/Select.pm /usr/share/perl5/Debconf/Element/Web/Select.pm /usr/share/perl5/HTML/Widget/Element/Select.pm I will open the below module in vim editor $vim /usr/lib/perl/5.8.8/IO/Select.pm just search the pattern /b can_read I have got this sub can_read { my $vec = shift; my $timeout = shift; my $r = $vec->[VEC_BITS]; defined($r) && (select($r,undef,undef,$timeout) > 0) ? handles($vec, $r) : (); } after seeing this I will know what can_read can do. I have done this for lot of perl modules and I have learnt some efficient techniques in this process, I am still learning, this is just my tips to you.