If I understand your question, you're saying that you have a Windows machine with a modem, and you want to write a program that will interface with the modem on that machine, and when someone dials into the modem, you want your Perl program to initiate a TCP connection to something else and bridge all input and output between the two. Right?
If I got that part right, then I have to assume that you haven't done a lot of socket programming, and you're not sure how to handle listen to two things at once (the modem and the socket) so that you can effectively pass the data back and forth.
If I guessed all that stuff right, then I think the answer you're looking for is in the modules IO::Select and IO::Socket. However, I know there used to be some problems with sockets under Windows, so check on that first. Also, you can check the fine tutorial Reading from more than one socket at once