If you're not catching output of the program, you don't need open2, just
open F, "|bc" will be enough. You also probably want your sockets and pipes to be non-blocking, so the program won't wait until all 80 bytes are entered. I understand you probably want to hack it all by yourself without extra modules (I definitely would), but if not, you might look into f.ex.
IO::Events
(excuse me for the shameless plug, but I myself like to hack non-blocking IO), where by a strange coincidence the example code in synopsis also wraps bc. Alternatively,
IO::Select
or even
POE might be of interest.