in reply to XP fails, HP-UX OK

Here's an additional tip. You'll note how you needed to change four quote characters:

HP-UX:
perl ... -e '... "127.0.0.1" ...'
XP:
perl ... -e "... '127.0.0.1' ..."

Also note in the HP-UX version, you've used double quotes around 127.0.0.1 although you don't actually want to interpolate that string. In this instance, it didn't matter but in other cases it will, cf. "$ip_addr" vs. '$ip_addr'. Escaped single quotes, i.e. \'127.0.0.1\', are an option but messy.

Using q{}, qq{} and other Quote-Like Operators means you only need to worry about the two outer quotes:

HP-UX:
perl ... -e '... q{127.0.0.1} ...'
XP:
perl ... -e "... q{127.0.0.1} ..."

You have a fairly straightforward one-liner here but you can have situations where you may need to change many more quotes. If you get into the habit of using q{}, qq{} and so on, you'll only need to remember to change the outer quotes and everything else will work as intended.

-- Ken