use IO::Socket::INET; use strict; use warnings; my $s = IO::Socket::INET->new(Proto => "tcp", LocalHost => "localhost", LocalPort => 3000, Timeout => 60, Listen => 10, Reuse => 1) || die "failed to start\n"; print "regexp service started\n"; while (1) { if (my $c = $s->accept()) { print "Got one service request\n"; my $func = readLine($c); if ($func eq "match") { my $string = readLine($c); my $pattern = readLine($c); if ($string =~ m/$pattern/) { print $c "1\n"; } else { print $c "0\n"; } } elsif ($func eq "substitute") { my $string = readLine($c); my $pattern = readLine($c); my $replacement = readLine($c); $string =~ s/$pattern/$replacement/; print $c "$string\n"; } close($c); } } sub readLine { my $c = shift; my $line = <$c>; $line =~ /(.*)\r\n/; return $1; }