in reply to Refactoring Perl #3 - Inline Temp

i'm not sure what you mean by "to turn a once dynamic variable into a read-only" ... that doesn't really seem to relate to the refactoring at hand, nor does it relate to declaring a variable "final" in java ... Readonly seems to be the perfect corollary for perl.

UPDATE: based on a message i just got, apparently i wasn't clear about my "i'm not sure what you mean" comment ... I do understand the concept of "locking" a variable that could previously be changed so that once it is locked it is effectively readonly -- but i assumed i must have been misunderstanding the OP question, since that has nothing to do with the refactoring.

This refactoring only works if a variable is assigned once, the comment by Fowler about declaring the variable "final" before attempting the refactoring is all about ensuring that it really is a "read only" from the very start.

Replies are listed 'Best First'.
Re^2: Refactoring Perl 3 - Inline Temp
by agianni (Hermit) on Jul 18, 2007 at 15:47 UTC

    Sorry, I think the first part of the problem was my misunderstanding of the final keyword in Java. I didn't realize that it was a declaration keyword. As such, something like Readonly is a perfect equivalent in Perl (although the additional recommendations are much appreciated).

    As for the second issue, this doesn't have anything to do directly with refactoring. I simply pointed out that Fowler suggested this method for a sanity check before performing the refactor. I just thought this was useful enough to call out, much as I have mentioned testing techniques in other write-ups that don't directly relate to refactoring.

    perl -e 'split//,q{john hurl, pest caretaker}and(map{print @_[$_]}(joi +n(q{},map{sprintf(qq{%010u},$_)}(2**2*307*4993,5*101*641*5261,7*59*79 +*36997,13*17*71*45131,3**2*67*89*167*181))=~/\d{2}/g));'