in reply to Two simple code style advice questions
So there is a personal preference and a $work preference...
Part 1
So clearly (a) is better as long as speed doesn't matter, even for me the $_ => 0 part evidently signals a hash assignment to my visual cortex. And this construct is easily changed to other meanings.
The only exclusion to that rule may be this idiom @ntests{@tests} = () to assign undef.
Anyway in aforementioned work context even map was risky.¹
So maybe
my %ntests; $ntests{$_}=0 for @tests;
would cause the least problems.
Part 2
For me (a) is an obfuscation hack. It goes to deep into brain loops about numeric type casting.
So this time (b) for me.
At $work (where the word "ternary" provoked empty glares¹) maybe rather:
my $mol = ""; $mol = "forty two" if $n==42;
HTH! :)
Cheers Rolf
¹) It hurts, I know!