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;
}
####
import java.net.*;
import java.io.*;
class RegExp
{
public static boolean match(String string, String pattern) {
try
{
Socket s = new Socket("localhost", 3000);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedOutputStream(s.getOutputStream()), true);
out.println(new String("match"));
out.println(string);
out.println(pattern);
String data = in.readLine();
if (data.equals("1"))
{
return true;
} else {
return false;
}
}
catch (IOException e)
{
System.out.print(e);
return false;
}
}
public static String substitute(String string, String pattern, String replacement) {
try
{
Socket s = new Socket("localhost", 3000);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedOutputStream(s.getOutputStream()), true);
out.println(new String("substitute"));
out.println(string);
out.println(pattern);
out.println(replacement);
String data = in.readLine();
return data;
}
catch (IOException e)
{
System.out.print(e);
return null;
}
}
}
####
class RegExpTest
{
public static void main(String[] argv)
{
if (argv[0].equals("m"))
{
boolean result = RegExp.match(argv[1], argv[2]);
System.out.print(result);
} else if (argv[0].equals("s"))
{
String result = RegExp.substitute(argv[1], argv[2], argv[3]);
System.out.print(result);
}
}
}