pp2@nereida:~/src/perl/testing$ cat -n ioevents.pl
1 use strict;
2 use IO::Events;
3
4 my $loop = IO::Events::Loop-> new();
5
6 my $stdin_alive = 1;
7 my $calculator = IO::Events::Process::ReadWrite-> new(
8 owner => $loop,
9 process => 'bc -l',
10 on_read => sub {
11 while ( my $line = $_[0]-> readline) {
12 print "bc says: $line";
13 }
14 },
15 on_close => sub {
16 exit 1 if $stdin_alive; # fork/exec error
17 }
18 );
19
20 my $stdin = IO::Events::stdin-> new(
21 owner => $loop,
22 on_read => sub {
23 $calculator-> write( $_[0]-> read );
24 },
25 on_close => sub {
26 $stdin_alive = 0;
27 exit;
28 },
29 );
30
31 $loop-> yield while 1;
pp2@nereida:~/src/perl/testing$ perl ioevents.pl 4*2 bc says: 8 3-5 bc says: -2 quit
pp2@nereida:~/src/perl/testing$ cat -n ioeventstcpport.pl
1 use strict;
2 use IO::Events;
3
4 my $loop = IO::Events::Loop-> new();
5 IO::Events::Socket::TCP-> new(
6 owner => $loop,
7 listen => 1,
8 port => 10000,
9 on_read => sub {
10 my $new = shift-> accept(
11 read => 1,
12 on_read => sub {
13 while ( my $line = $_[0]-> readline) {
14 print "client says: $line\n";
15 exit;
16 }
17 }
18 );
19 print "connect from $new->{remote_addr}:$new->{remote_port}\n";
20 },
21 );
22
23 IO::Events::Socket::TCP-> new(
24 owner => $loop,
25 connect => 'localhost',
26 port => 10000,
27 )-> write("hello, tcp socket!\n");
28
29 $loop->yield while 1;
pp2@nereida:~/src/perl/testing$ perl ioeventstcpport.pl connect from 127.0.0.1:39294 client says: hello, tcp socket!
1 use strict;
2 use Socket;
3 use IO::Events;
4
5 my $loop = IO::Events::Loop-> new();
6 IO::Events::Socket::UDP-> new(
7 owner => $loop,
8 port => 10000,
9 on_read => sub {
10 my $self = $_[0];
11 my $data = $self-> recv;
12 print "$self->{remote_host}:$self->{remote_port} says: $data";
13 exit;
14 },
15 );
16
17 IO::Events::Socket::UDP-> new(
18 owner => $loop,
19 )-> send( 'localhost', 10000, "hello, udp socket!\n");
20
21 $loop->yield while 1;
pp2@nereida:~/src/perl/testing$ perl ioeventsudpport.pl localhost:32835 says: hello, udp socket! pp2@nereida:~/src/perl/testing$ cat -n ioeventsudpport.pl
