# Non blocking open open (FH, "+<", $config->{'pipe'} ) || die "Unable to open $config->{'pipe'}"; my $rin = ''; my $rout = ''; vec( $rin, fileno(FH), 1) = 1; # No, I have no idea either # Loop forever. while (1) { # Wait for the pipe to change status my $nfound = select( $rout = $rin, undef, undef, undef ); # blocking select my $data; # Non blocking select only returns a value while there is something in the pipe while ( select( $rout = $rin, undef, undef, 0 ) ) { sysread FH, my $buf, 2048; $data .= $buf; } Log( { logfile => $log_file, text => 'trace: START: '. ( $data || '$data no val' ) }) if TRACE; # 9/4/8 A request is C,DIR,1ROSE # Multiple requests can come through on one read ie C,FOO,1ROSEC,BAR,1ROSE for ( split /ROSE/, $data ? $data : '' ) { if ( /^RELOAD/ ) { # Reread the config file Log({logfile=>$log_file, text=> qq{RELOAD: Reloading config}}); load_config(); } else { process_input( { data => $_ } ) if $_; } } } # while 1