diff --git a/_development/coding_style.md b/_development/coding_style.md index f9eed21..7290955 100644 --- a/_development/coding_style.md +++ b/_development/coding_style.md @@ -119,6 +119,31 @@ And the bad example: my $circle_area = $radio * 3.14159 * 3.141592; ``` +### Don't use each + +`each` is evil, and although it can be used correctly, should be avoided at all costs. + +The problem is that each sort-of remembers the last element it iterated over, this has all sorts of nasty side effects. + +Use `foreach` to iterate over `keys` instead. + +Bad example: + +```perl +while (my ($k, $v) = each(%h)) { + ... +} +``` + +Good example: + +```perl +foreach my $k (keys %h) { + my $v = $h{$k}; + ... +} +``` + ### Module header A Perl module **must** start with a line like: