Im trying to make this stupid regular expression, and Im having a stupid bug somewhere. I know what I need to extract, in what order, but its extracting partial strings and shit, not just the whole thing

I have something to the effect of /(stuff*(item(thing?crap)*junk)?)/
I need to extract the entirety of what matches the regex (the outside parenthesis), but its matching and extracting all the subsections, I know im doing something stupid here.

I have a string $x with a bunch of words that need matching, and im just looping over them with

while ($x =~ /aforementionedregex/g){
	print "<$1> match!\n";
But its matching all kinds of shit. like, I need that entire fucker to evaluate to true, and if so, then print the entire fucking matching string. Not like, if this subsection matches, print the subsection.
It is also printing that a blank matches, when a particular subsection doesnt match, but a different subsection of the string does

I know what i need my regex to do, and Im pretty sure ive got the gist of it laid out here (i was able to lay out the character orders in english), Im just pretty sure I've got some shitty syntactical errors going on.