#file name person.pm package person; sub new { $class = shift; $self = { Name => "", Email_id =>"", Contact => "", Company =>"", #spouce =>, # Spouce class pointer (default 'no spouce') }; bless ($self,$class); return $self; }; sub Name { $self = shift; if(@_) { $self->{Name} = shift;} return $self->{Name}; }; sub Email_id { $self = shift; if(@_) { $self->{Email_id} = shift ;} return $self->{Email_id} }; : : : sub spouce { $self=shift; if(@_) { $self->{spouce} = shift ;} return $self->{spouce} }; sub PrintDetail { $self=shift; print STDOUT "Self\n Name = $self->{Name}\n Email=$self->{Email_id}\n Contact=$self->{Contact},\n Company=$self->{Company}\n"; if ($self->{spouce}) { print STDOUT "Spouce\n Name = $self->{spouce}->{Name}\n Email=$self->{spouce}->{Email_id}\n Contact=$self->{spouce}->{Contact},\n Company=$self->{spouce}->{Company}\n"; }; } #person_test.pl use person; open(INFILE,$file)|| die "could not open file for reading!\n"; while() { chomp $_; ($Name,$eMail,$Mobile,$Company,$Spouse,$SeMail,$SMobile,$SCompany,$NativePlace) = split(/,/); #print "$i) $Name :\t $Mobile :\t $eMail\n"; foreach($Name) { if($_ =~ m/^[$pattern]/i) { $object = Person->new(); $object->Name($Name); $object->Email_id($eMail); $object->Contact($Mobile); $object->Company($Company);}