in reply to interprocess communication

I don't have time to run your code, but there is at least one thing you do wrong:

Your parent-process uses the angle-operator to read from the pipe which means it looks for newlines. Your child however does not supply newlines.

So try

print WRITE "$val2\n";
in your child.