in reply to Variable assignment confusion
Well, you're assigning either the result of a match or, if the match is without success, the retid + "_001". It's not true that this always assigns 1, it only assigns 1 when the match is successfull, because a simple m// returns a boolean (undef or 1) and || will return it's left operand's result if it's true.
What you want is, as you said:
# parens not neccessary here
my $new_retid =
# if the retid has the suffix
$retid =~ /_\d{3}$/ ?
# then leave it as is
$retid :
# otherwise add _001 suffix
$retid.'_001'
See perlop for "?:" and the behaviour of m//. HTH
|
|---|