Your way is more than adequate.
You can also create enums with Moose::Util::TypeConstraintsMoose::Util::TypeConstraints, if you happen to be using Moose. (Which you should be.)
use Moose::Util::TypeConstraints;
has 'phone_number' => (
is => 'ro',
isa => enum([qw/ Home Work Mobile /]),
);