Re: IPC::IDT Argumenmt isn't numeric in subtraction (at LDT.pm line 1131)

[email protected] (Jochen Stenzel)
Newsgroups perl.loop
Message-ID <[email protected]>
Hello, Alex,

>   my $ldt=new IPC::LDT(handle=>$socket, objectMode=>1);
>   ($msg) = $ldt->receive or (print $ldt->{'msg'} && exit
> 1);

this code looks good.


> This code is called from an Event 0.81 io watcher, and
> $socket is $event->w->fd.

Well, this *should* work, but honestly spoken I never tried it this way.
I usually make the IPC::LDT object *with* the socket and pass it as an
argument to the callback, avoiding to construct (and destroy) an
IPC::LDT object with every callback invokation.

Here's a simplified example:

- snip --

 # make socket and LDT object
 my $socket=IO::Socket::INET->new(...);
 my IPC::LDT $clientLdt=new IPC::LDT(handle=>$socket);

 # unbuffer clients income
 $clientSocket->autoflush;

 # register the new connection as event source
 Event->io(
    desc  => "new connection",
    fd  => $socket,
    poll  => 'er',                             # wait for income;
    cb  => sub {serveClient($_[0], $clientLdt)}, # callback (pass event
and LDT objects);
    repeat  => 1,                                       # keep alive
after events;
   );

...

sub serveClient
  {
  # get and check parameters
  my ($event, $ldt)=@_;
  ...

  # we received anything - check it
  my $msg=$ldt->receive;

  # all right?
  unless ($ldt->{rc}==LDT_OK) ...

   ...
  }



- snip --



> Argument "^E^D^B" isn't numeric in subtraction (-) at
> <perlpath>/lib/site_perl/5.6.0/IPC/LDT.pm line 1131.

Hm. Is it possible to send me code to reproduce this behaviour? I wonder
where this string comes from ...

           Jochen
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.