in reply to Amortization Calculator

I have a question about a section of your code.   :-)
538 my $b_is_fh = (ref($out) =~ /FileHandle/); 539 my $pout = sub { 540 my ($msg) = @_; 541 $b_is_fh and print $out "$msg\n"; 542 $b_is_fh or $out->out($msg); 543 };
The only value that ref($out) can contain is 'FileHandle' which means that the test is superfluous and the line $b_is_fh  or $out->out($msg); is also superfluous.

Update: OK, I see what you are doing, ref($out) can either be 'textbox' OR 'FileHandle'.