my($timezone) = (timegm(localtime(time)) - timelocal(localtime(time))) / -3600; my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); $year += 1900; my @data = ((0) x 39); if($timezone < 0 ) { $data[8] = 255 + $timezone - 1; @data[9, 10, 11] = (255, 255, 255); } else { $data[8] = $timezone; @data[9, 10, 11] = (0, 0, 0); } $data[12] = $year & 255; $data[13] = $year >> 8; $data[14] = $min; $data[15] = $hour; $data[16] = $year - 1900; $data[17] = $wday; $data[18] = $yday; $data[19] = $mon; $data[24] = int($ipSeg1); $data[25] = int($ipSeg2); $data[26] = int($ipSeg3); $data[27] = int($ipSeg4); $data[28] = $port & 255; $data[29] = $port >> 8; $data[38] = 6; my($packet) = pack('C*', @data);