The listener 

if($opt{listener}) {
    my $listener = BCVI::Listener->new(%opt);
    $listener->loop();
}
package BCVI::Listener;

use IO::Socket::INET;
use IO::Select;
use Scalar::Util qw(refaddr);
use File::Spec;
use POSIX        qw(:errno_h);