$source =~ s/(\[link title:(.*?)\](.*?)\[\/link])/$2<\/a>/gi; #### while ($source =~ s/\G(\[link title:(.*?)\](.*?)\[\/link])/$2<\/a>/i) { print "complete: $1\ntitle: $2\nurl: $3\n"; }