That really is a good application for Net::Pcap. You dismissed pcap because you didn't want to handle all received frames, but pcap allows you to define a filter so you'd actually be able to select just dhcpc messages if you wanted.
--isotope
Comment on Re^3: (OT) Getting the source hardware address of received UDP packets?