use strict; use warnings; use IO::Socket::INET; my $port = getservbyname 'bootps', 'udp'; my $socket = IO::Socket::INET -> new (LocalPort => $port, Broadcast => 1, Proto => 'udp', ReuseAddr => 1, Type => SOCK_DGRAM) or die "Failed to bind to socket: $@"; my $mess; $socket -> recv ($mess, 1024); if (defined $mess) { print "Saw a bootp request.\n$mess\n"; } else { print "No bootp request.\n"; }