in reply to Variable assignment confusion

Is there some compelling reason to make this a one-line assignment? Here's what I'd consider nicely readable:
my $new_retid = $retid; $new_retid .= '_001' unless $retid =~ /_\d{3}$/;
Apart from the ternary operator suggested by several, here are a few bletcherous but possibly instructive ways to turn it into one assignment:
my $new_retid = $retid . '_001' x $retid !~ /_\d{3}$/;
(my $new_retid = $retid) .= do {'_001' unless $retid =~ /_\d{3}$/};
my $new_retid = $retid . ($retid !~ /_\d{3}$/ and '_001');
Update:
One more:
(my $new_retid = $retid) =~ s/(?<!_\d{3})$/_001/;
And one inspired by delerium's post above:
my ($new_retid) = grep( $_, $retid =~ /(^\d{4}_\d{3})$/, $retid.'_001' +);

The PerlMonk tr/// Advocate