in reply to The difficulties of commenting code

Agreed. And in addition to clear names for variables, (stolen from Refactoring, Fowler) replace several lines of code and the comment with a well-named sub:
sub xxx { # this code does foo and bar and baz [many lines of code] }
can become
sub xxx { do_foo_and_bar_and_baz(); } sub do_foo_and_bar_baz { # no explicit comment needed, since sub has clear name [many lines of code] }