http://www.perlmonks.org?node_id=1013623


in reply to Two simple code style advice questions

After working for a while with Perl "programmers" which were mostly converted PHP-hackers and quickly trained sociologists (both with an experimental approach to Perl) I got very cautious about production code. (Especially because everybody was allowed to change and commit into any project... )

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!