in reply to Regexp with optional group containing backreference

(I'm assuming those <br /> are a problem with your post and not in the original data.)

Reading in paragraph mode should do the trick:

$/ = ''; while (<DATA>) { chomp; my ($name, $addr, $url) = split(/\n/, $_); print("name: $name\n"); print("addr: $addr\n"); print("url: ", (defined($url) ? $url : '[undef]'), "\n"); print("--\n"); } __DATA__ Name Address URL Name2 Address2

output:

name: Name addr: Address url: URL -- name: Name2 addr: Address2 url: [undef] --