package Widget;
use Class::Struct;
struct Widget => 
[
    total_widgets => '$',
    widgets_per_hour => '$'
]

---------------------------

package Widget;
use Carp;

sub new {
    my ($class, %paras) = @_;
    my @object;
    if (defined $paras{total_widgets}) {
        $object[0]=$paras{total_widgets};
    } else {
        $object[0] = undef;
    }

    if (defined $paras{widgets_per_hour}) {
        $object[1]=$paras{widgets_per_hour};
    } else {
        $object[1] = undef;
    }

}

#continued on next page
 
sub total_widgets {
    my ($object, $newval) = @_;
    croak "Too many arguments to total_widgets" if @_ > 2;
    $object->[0] = $newval if @_ > 1;
    return $self->[0];
}

sub widgets_per_hour{
    my ($object, $newval) = @_;
    croak "Too many arguments to widgets_per_hour" if @_ > 2;
    $object->[1] = $newval if @_ > 1;
    return $self->[1];
}

