I downloaded a serial monitoring program and I can see the packets coming and going to the Arduino when I run my script
Based on that description, you have confirmed that "something" is being sent from both sides. If you can get logging going from your Perl code, that would help you to verify that your code is actually sending what you think it is sending and verify exactly what it is receiving. This will help you to catch issues such as extra/missing white space characters (like carriage returns and line feeds) in what you send. By verifying what your code actually receives, you can debug the portions of your code that is reading the data sent from the device by seeing if it is processing the incoming data properly.
Another debugging method would be to use something like putty to manually connect to the device to try to interact with it manually. If that's not working, then there might be other issues that need to be addressed first.
I tried changing the timing to read the data coming it
Have you looked into the buffering aspect of things?
Another thing you can check is to see if you're using the same versions of Perl and the Win32::SerialPort module on both systems.