#!C:\perl\bin\perl.exe -w use strict; use Socket; my $arg = shift @ARGV or die "Need a domain, dummy!\n"; my ( $domain ) = ( $arg =~ m!^(?:[^/]+/?/)?([^/]+)! ); print "Domain is " . get_domain( $domain ); sub get_domain { my @segment = reverse split /\./, shift; my $domain; return 0 if $segment[0] =~ /^(?:local|public)$/; SEARCH_FOR_DOMAIN: { foreach ( @segment ) { ( $domain = $_, next ) if not $domain; $domain = $_ . ".$domain"; last SEARCH_FOR_DOMAIN if inet_aton( $domain ); } return 0; } return $domain; }