#!/usr/bin/perl use strict; use warnings; use IO::Socket::INET; use IO::Select; my $sel = IO::Select->new; my $port = getservbyname 'bootps', 'udp'; my $socket = IO::Socket::INET -> new (LocalPort => $port, Broadcast => 1, Proto => 'udp') or die "Failed to bind to socket: $@"; $sel->add($socket); my $n = 10; my $mess; while (1) { my @r = $sel->can_read($n); unless (@r) { print "Nothing after $n seconds\n"; next; } $socket -> recv ($mess, 1024); print "Saw a bootp request.\n"; } __END__