#!/usr/local/bin/perl -w use strict; use Socket; sub usage { print STDERR "Usage: $0 mac\n"; exit(1); } $_ = shift || usage; s/-/:/g; my @mac = split /:/; usage unless(scalar(@mac) == 6); my $macbytes = pack "C6", map { hex $_; } @mac; my $packet = "\377"x6 . $macbytes x 16; socket(H,PF_INET,SOCK_DGRAM,getprotobyname('udp')) or die "$!"; setsockopt(H,SOL_SOCKET,SO_BROADCAST,1); send(H,$packet,0,sockaddr_in(9,INADDR_BROADCAST)) or die "$!";