###
local $_ = $value;
my $foo = (/aaa/) ? 'wanna' :
(/bbb/) ? 'be' :
(/ccc/) ? 'startin' : 'somethin';
###
####
Point 1: "local" is a "rare duck" - it happens seldom.
Almost always "my" is better. local is an artifact
of previous Perl versions, but it still has uses.
Point 2: I figure that setting $_ as an lvalue is a bad idea.
That is motivated the fact that Perl can and will
do this by itself.
Point 3: I have no problem with ternary expressions. But I
I do have a problem with an ":" without a "blah;"
Point 4: If we have a complex decision with 4 values, probably
we can come up with a name for that decision and
I'd name a sub{} with that name.
Point 5: If the thing we are searching is small and performance
is not an issue, I would omit "last" and "next"
in the interest of simplicity.
So, this is one way to do this..
my $foo = decide($value);
sub decide
{
my $value = shift;
my $decision = 'somethin';
foreach ($value) #sets $_ to $value!
{
$decision = 'wanna' if (/aaa/);
$decision = 'be' if (/bbb/);
$decision = 'startin' if (/ccc/);
}
return ($decision );
}
####
if $foo eq 'be'{...do xxxx...}