#- ObjectVariableTest.pl
#- Copyright (c) 1999 by Dr. Herong Yang, http://www.herongyang.com/
#- from : http://www.herongyang.com/Perl/Object-Variable-and-Class-Variable.html
# 03/09/2010 - Created for viewing, testing, understanding...
package Account;
   $euroRate = 0.85;
sub print {
   my $this = shift;
   my $currency = shift;
   my $balance = $$this{"Balance"};
   $balance *= $euroRate if ($currency eq "EURO");
   print("Printing account...\n");
   print("   Name = ",$$this{"Name"},"\n");
   print("   Type = ",$$this{"Type"},"\n");
   print("   Balance = ",$balance,"\n");
}
sub deposit {
   my $this = shift;
   my $amount = shift;
   $$this{"Balance"} += $amount;
}
sub setEuroRate {
   my $class = shift;
   $euroRate = shift;
}
package main;
   %myAccount = {};
   $myAccount{"Name"} = "Herong Yang";
   $myAccount{"Type"} = "Checking";
   $myAccount{"Balance"} = 100.00;
   $myObj = \%myAccount;
   bless($myObj,Account);

   %hisAccount = {};
   $hisAccount{"Name"} = "Mike Clinton";
   $hisAccount{"Type"} = "Saving";
   $hisAccount{"Balance"} = 999.00;
   $hisObj = \%hisAccount;
   bless($hisObj,Account);

   print("\nTest 1:\n");
   $myObj->print();
   $hisObj->print();

   print("\nTest 2:\n");
   $myObj->deposit(-25.00);
   $hisObj->deposit(99.00);
   $myObj->print();
   $hisObj->print();

   print("\nTest 3:\n");
   $myObj->print("EURO");
   $hisObj->print("EURO");

   print("\nTest 4:\n");
   Account->setEuroRate(0.80);
   $myObj->print("EURO");
   $hisObj->print("EURO");
   exit;
