package BankAccount;
use strict;
use warnings;
use Carp;

sub new {
   my $class = shift;
   croak "Usage: BankAccount::new(\$name, \$account, \$balance)" 
      unless @_ == 3;
   
   my ($name, $acct, $opening_bal) = @_;
   croak "\$balance must be numeric only"
      unless $opening_bal =~ /^\d+(?:\.\d{2})?$/;

   my $self = { name => $name, account_num => $acct, balance => $opening_bal };

   bless $self, $class;
}


sub get_name { $_[0]->{name} }
sub get_account_num { $_[0]->{account_num} }
sub get_balance { $_[0]->{balance} }

sub deposit {
   my $self = shift;
   my $amt = shift;

   $self->{balance} += $amt;
}

sub withdraw {
   my $self = shift;
   my $amt = shift;

   $self->{balance} -= $amt;
}


1;

