in reply to choosing and/or overriding defaults for a sub argument

The logic looks good to me, but I prefer this slightly more readable implementation:
my $self = shift; my $file = $self->{'file'} = shift || $self->{'file'};
-Ton
-----
Be bloody, bold, and resolute; laugh to scorn
The power of man...