I think you're not following OOP too close. I would change it to something like this (untested):
sub new { my ($class, %parameters) = @_; my $self = {}; # here we check required parameters, to croak() them. since we are + using # OOP, we *need* to ensure this object will be complete to perform + whatever # operations, avoiding coupling. foreach (qw(cardnum)) { # maybe we have other required parameters croak "Required parameter '$_' not found" unless exists $parameters{$_}; } # now we set defaults for not obligatory parameters $self->{'tail'} = $parameters{'tail'} || -4; $self->{'head'} = $parameters{'head'} || 0; $self->{'replacement'} = $parameters{'replacement'} || "*"; } sub obscure { my ($self) = @_; my $obscured = substr($self->{'cardnum'}, $self->{'head'}, $self->{'tail'} ) =~ s/./$self->{'replacement'}/g; return $obscured; }
Hope this helps.
Igor 'izut' Sutton
your code, your rules.
In reply to Re: RFC: Business::CreditCard::Obscure
by izut
in thread RFC: Business::CreditCard::Obscure
by kwaping
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |