use Class::HPLOO ; class User { attr( str name , int age , &my_word_type user , &my_word_type pass , array links ) ; ## my personalized type: sub my_word_type ($value) { $value =~ s/\W//gs ; $value = lc($value) ; return $value ; } ## initializer for the object: sub User ( $name , $age , $user , $pass , @links ) { ## through set method: $this->set_name($name) ; $this->set_links(@links) ; ## through tied key: $this->{age} = $age ; $this->{user} = $user ; $this->{pass} = $pass ; } ## some method: sub dump_user { print "USER: $this->{user}\n" ; print " name: $this->{name}\n" ; print " age: $this->{age}\n" ; print " links: ". join(" ", $this->get_links) ."\n" ; print "\n" ; } } ## USAGE: package main ; my $user = new User( 'Joe' , '30' , 'JOE' , 1234 , 'www.perl.com' , 'www.cpan.org' ) ; $user->dump_user ; exit; #### public class User implements Serializable { ... }