The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Net::Bluetooth;
                                                                                                                         
	#### About the sdp_search call:
	#### The $addr argument is an address in the form of "00:00:00:00:00:00".
	#### $addr can also be "localhost" which will search the local SDP server.
	#### The second argument is the service ID to search for and is optional.
	#### It is a string in the form of a 128 bit ID:
	#### "00000000-0000-0000-0000-000000000000" or a 16 bit ID: "0000".
	#### All service IDs must be in hexidecimal format.
	#### The service ID can also be "0" which will search the public
	#### services on the device. 
	#### The third argument is the service name and is optional.

	#### Different ways to search for a service:
	#### Search for service 1101 (Serial Port) and do not specify a name.
  	sdp_search($addr, "1101", "");

	#### Search for services named "Imaging" and do not specify a service ID.
  	sdp_search($addr, "", "Imaging");

	#### Search for a service on the local SDP server.
  	sdp_search("localhost", "12345678-1234-1234-123456789012", "");


	#### Search for public services and do not specify a name.
	#### Note, usually not every single device service is listed in the public group.
  	sdp_search($addr, "0", "");
  	sdp_search($addr, "", "");


	#### Finally here is an exmaple of how I search for the serial port on my GPS device:

	use Net::Bluetooth;

	#### find  remote devices
        my $device_ref = get_remote_devices();
	#### Could retry here instead of exiting.
	die "No devices found." unless(defined($device_ref));

        my $gps_addr = "";
	#### Loop through each device and find the one we want.
        foreach $addr (keys %$device_ref) {
		#### If the device name matches "BT GPS" grab the address.
                $gps_addr = $addr if($device_ref->{$addr} =~ /^BT GPS/);
        }

	#### Could retry here instead of exiting.
	die "BT GPS not found." unless(defined($gps_addr));


	#### Search for the serial service (0x1101) on my GPS device.
	#### The serial port is what mine uses to transfer GPS info.
  	my @sdp_array = sdp_search($gps_addr, "1101", "");
	die "No service records found" unless(defined(@sdp_array));
                                                                                                                   
	my $port = 0;
	#### Loop through all the service records.
  	#### foreach service record ....
  	foreach $rec_ref (@sdp_array) {
		#### Get the RFCOMM port number for the service.
		if(exists($rec_ref->{RFCOMM})) {
			$port = $rec_ref->{RFCOMM}; 
			last;
		}
	}

	die "No RFCOMM record found." unless($port > 0);