use strict; use warnings; my @allowed = qw~ foo.de bar.de ~; my $allowed = join '|', map quotemeta($_), @allowed; my $url_ok = qr~ ^http://([^/]+\.)?($allowed)(/.*)?$ ~ix; while (my $url = ) { chomp $url; print "$url:\n"; if ($url =~ m/$url_ok/) { print " domain: $2\n"; print " subdomain: $1\n"; print " path: $3\n"; } else { print " not accepted\n"; } print "\n"; } __DATA__ http://www.example.com/foo/bar http://www.foo.de/blubb http://www.foo.de http://bar.de/boing http://bar.de http://www.foo.de.vu/blubb http://foo.de.vu/didumm http://foo.de.vu