in reply to vec and unpack

what vec() does here ?

Tells select to which file handles to pay attention.

By the way, IO::Select provides a much better interface than select.

Without calling vec() function also this piece of code work fine what i have expected .

Because the select is redundant with the select in can_read.

split (//, unpack("b*", $OutputBuffer)) what it does?

Nothing, @Bits is never used.