diff --git a/compiler/cpp/src/generate/t_perl_generator.cc b/compiler/cpp/src/generate/t_perl_generator.cc
index ed3fab7..76a4443 100644
--- a/compiler/cpp/src/generate/t_perl_generator.cc
+++ b/compiler/cpp/src/generate/t_perl_generator.cc
@@ -256,6 +256,23 @@
     out << "use base('Thrift::TException');\n";
   }
 
+  //Create simple acessor methods
+  out << "use base('Class::Accessor');\n";
+
+  if (members.size() > 0) {
+      out << perl_namespace(tstruct->get_program()) << tstruct->get_name() <<"->mk_accessors( qw( ";
+      for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
+          t_type* t = get_true_type((*m_iter)->get_type());
+          if (!t->is_xception()) {
+              out << (*m_iter)->get_name() << " ";
+          }
+      }
+
+      out << ") );\n";
+  }
+
+
+  // new()
   out << "sub new {\n";
   indent_up();
   out << "my $classname = shift;\n";
diff --git a/lib/perl/README b/lib/perl/README
index d1eef70..3b95f13 100644
--- a/lib/perl/README
+++ b/lib/perl/README
@@ -1,7 +1,7 @@
 Thrift Perl Software Library
 
-Author: T Jake Luciani (jakers@gmail.com)
-Last Modified: 2007-Apr-28
+Author: T Jake Luciani (jake@3.rdrail.net)
+Last Modified: 2007-Sep-18
 
 Thrift is distributed under the Thrift open source software license.
 Please see the included LICENSE file.
@@ -17,22 +17,11 @@
 The 64bit Integers work only upto 2^42 on my machine :-?
 Math::BigInt is probably needed.
 
-The only other issue I have with this implementation is the lack of
-strict accessor methods, for example: to set a struct with variable
-foo you must assign it via hash key:
-
-my $x = new StructWithFoo();
-$x->{foo} = "bar";
-
-rather than:
-
-$x->foo("bar");
-
 Please see tutoral and test dirs for examples...
 
 Dependencies
 ============
 
-Bit::Vector - comes with modern perl installations.
-
+Bit::Vector     - comes with modern perl installations.
+Class::Accessor
 
diff --git a/test/perl/TestClient.pl b/test/perl/TestClient.pl
index 4e6278e..82e8320 100644
--- a/test/perl/TestClient.pl
+++ b/test/perl/TestClient.pl
@@ -83,33 +83,33 @@
 # STRUCT TEST
 #
 print("testStruct({\"Zero\", 1, -3, -5})");
-my $out = new Xtruct();
-$out->{string_thing} = "Zero";
-$out->{byte_thing} = 1;
-$out->{i32_thing} = -3;
-$out->{i64_thing} = -5;
+my $out = new ThriftTest::Xtruct();
+$out->string_thing("Zero");
+$out->byte_thing(1);
+$out->i32_thing(-3);
+$out->i64_thing(-5);
 my $in = $testClient->testStruct($out);
-print(" = {\"".$in->{string_thing}."\", ".
-        $in->{byte_thing}.", ".
-        $in->{i32_thing}.", ".
-        $in->{i64_thing}."}\n");
+print(" = {\"".$in->string_thing."\", ".
+        $in->byte_thing.", ".
+        $in->i32_thing.", ".
+        $in->i64_thing."}\n");
 
 #
 # NESTED STRUCT TEST
 #
 print("testNest({1, {\"Zero\", 1, -3, -5}, 5}");
-my $out2 = new Xtruct2();
-$out2->{byte_thing} = 1;
-$out2->{struct_thing} = $out;
-$out2->{i32_thing} = 5;
+my $out2 = new ThriftTest::Xtruct2();
+$out2->byte_thing(1);
+$out2->struct_thing($out);
+$out2->i32_thing(5);
 my $in2 = $testClient->testNest($out2);
-$in = $in2->{struct_thing};
-print(" = {".$in2->{byte_thing}.", {\"".
-      $in->{string_thing}."\", ".
-      $in->{byte_thing}.", ".
-      $in->{i32_thing}.", ".
-      $in->{i64_thing}."}, ".
-      $in2->{i32_thing}."}\n");
+$in = $in2->struct_thing;
+print(" = {".$in2->byte_thing.", {\"".
+      $in->string_thing."\", ".
+      $in->byte_thing.", ".
+      $in->i32_thing.", ".
+      $in->i64_thing."}, ".
+      $in2->i32_thing."}\n");
 
 #
 # MAP TEST
@@ -221,13 +221,13 @@
 #
 # INSANITY TEST
 #
-my $insane = new Insanity();
+my $insane = new ThriftTest::Insanity();
 $insane->{userMap}->{Numberz::FIVE} = 5000;
-my $truck = new Xtruct();
-$truck->{string_thing} = "Truck";
-$truck->{byte_thing} = 8;
-$truck->{i32_thing} = 8;
-$truck->{i64_thing} = 8;
+my $truck = new ThriftTest::Xtruct();
+$truck->string_thing("Truck");
+$truck->byte_thing(8);
+$truck->i32_thing(8);
+$truck->i64_thing(8);
 push(@{$insane->{xtructs}}, $truck);
 
 print("testInsanity()");
@@ -269,7 +269,7 @@
 eval {
     $testClient->testException('Xception');
     print("  void\nFAILURE\n");
-}; if($@ && $@->UNIVERSAL::isa('Xception')) {
+}; if($@ && $@->UNIVERSAL::isa('ThriftTest::Xception')) {
     print(' caught xception '.$@->{errorCode}.': '.$@->{message}."\n");
 }
 
diff --git a/tutorial/perl/PerlClient.pl b/tutorial/perl/PerlClient.pl
index 10cb725..44a5a52 100644
--- a/tutorial/perl/PerlClient.pl
+++ b/tutorial/perl/PerlClient.pl
@@ -31,14 +31,14 @@
     print "ping()\n";
 
 
-    my $sum = $client->add(1000000,1);
+    my $sum = $client->add(1,1);
     print "1+1=$sum\n";
 
-    my $work = new Work();
+    my $work = new tutorial::Work();
 
-    $work->{op} = Operation::DIVIDE;
-    $work->{num1} = 1;
-    $work->{num2} = 0;
+    $work->op(Operation::DIVIDE);
+    $work->num1(1);
+    $work->num2(0);
 
     eval {
         $client->calculate(1, $work);
@@ -47,9 +47,9 @@
         warn "InvalidOperation: ".Dumper($@);
     }
 
-    $work->{op} = Operation::SUBTRACT;
-    $work->{num1} = 15;
-    $work->{num2} = 10;
+    $work->op(Operation::SUBTRACT);
+    $work->num1(15);
+    $work->num2(10);
     my $diff = $client->calculate(1, $work);
     print "15-10=$diff\n";
 
