Not a Perl answer.
You say "network drive" but are showing a local drive in the code. If your real code is trying to access a network drive
are you running this code from a scheduled job or some other non-interactive process? Have you tried to connect to the file using it's UNC path, i.e. "//server/share/path" ? Some non-interactive jobs may not have access to the network shares because of the permissions of the user that they run as and you will almost certainly not have any mapped network drives unless you have explicitly done it in your code.
You should also be printing $! when you encounter an error as this will help diagnose the problem.