#!/usr/bin/perl
# File: useEnum
use Enum;

Enum->define(	'DAY', 1..31 );
Enum->define(	qw(MONTH	jan feb mar apr may jun
					jul aug sep oct nov dec) );

tie $day, Enum, 'DAY', 1;
print "$day\n" if $day = 0;	# Invalid
print "$day\n" if $day = 15;	# OK
print "$day\n" if $day = 31;	# OK
print "$day\n" if $day = 32;	# Invalid

tie $month, Enum, 'MONTH', 'aug';
print "$month\n" if $month = 'jan';	# OK
print "$month\n" if $month = 'jun';	# OK
print "$month\n" if $month = 'dec';	# OK
print "$month\n" if $month = 'DEC';	# Invalid

#tie $fish, 'Enum', 'FISH', 'bass';	# FISH type not
					# defined, we croak.
print "$fish\n" if $fish = 'wombat';	# Still a normal,
					# untied scalar.

# This call syntax works too:
define Enum( qw(FISH bass carp trout walleye) );
tie $fish, 'Enum', 'FISH', 'bass';	# FISH type is
					# now defined.
print "$fish\n" if $fish = 'wombat';	# Invalid
print "$fish\n" if $fish = 'trout';	# OK

