in reply to Can't quite get this regex working

The main cause is the missing /s modifier, as indicated. Here is my alternative edit, which doesn't repeat matching the first tag (which, BTW, would fail if you have the same tag twice in the string) but instead continues where it was:
while ($current_article =~ m/\[\[(.+?)\]\]/g) { my $tag_name = $1; print "Got $tag_name \n"; print "Checking if we have any contents AFTER it... \n"; print "RUNNING: \Q[[$tag_name]]\E(.*?)\[ \n"; if ($current_article =~ /\G(.*?)(?=\[)/gcs) { print "Got contents: $1\n"; } print "\n\n"; }
On your code, this produces:
Got 345fsdf sf Checking if we have any contents AFTER it... RUNNING: \[\[345fsdf\ sf\]\](.*?)[ Got contents: Got sdf sf fsd fsf Checking if we have any contents AFTER it... RUNNING: \[\[sdf\ sf\ fsd\ fsf\]\](.*?)[ Got contents: Got foo bar|whatever Checking if we have any contents AFTER it... RUNNING: \[\[foo\ bar\|whatever\]\](.*?)[ Got contents: == foo bar === foo bar test