in reply to Systemd Network Problem

the Perl script (when initiated from rc.local) fails every time. What's going on here?

The documentation for LWP::Simple includes this gem in the description of get():

You will not be able to examine the response code or response headers (like 'Content-Type') when you are accessing the web using this function. If you need that information you should use the full OO interface (see LWP::UserAgent).

So the answer is: "something". If you want to find out more, switch temporarily to full-on LWP and use the additional info available there to determine why the request fails.

Alternatively, compare the environments between running it in rc.local under systemd and running it in a standard way which by inference I assume works fine for you.

Final option: run a packet sniffer on the gateway to see the request and response in all their detail.

Hopefully one of these will work for you. I feel your systemd pain and hope that you can find a suitable simple fix.