You could always sniff the wire with something like Ethereal to attempt to find any signifigant differences between the request that works (your browser) and the request that doesn't (LWP). It might seem like overkill but when you're stuck sometimes ya just gotta get down there and actually see what's going on.