If you're looking to send modified IP / transport layer headers (FOR TESTING ONLY PURPOSES!!!), look at the Net::Frame suite of modules. You'll need to get Net::Pcap working - which on Windows has some caveats (see Re: Net::Pcap installation help (and not with the library)).
After that, check out the Perl Packet Crafter at:
If you're using *nix, it should be easily ported with Net::Libdnet (which I couldn't get working on Windows).
UPDATE: I just posted Net::Frame::Layer::SNMP which will help with SNMP packet construction.