contact.email = "x@x.com" #### $contact->{'email'} = "x@x.com"; #### $contact->email("x@x.com"); #### # module code sub email : Property; # ... # user code $contact->email = "x@x.com"; #### # module code sub email { # do some validation or processing here } # ... # user code - API stays the same. $contact->email = "x@x.com";