Hi.
New to Moose, my first larger project with it.

My object receives data from an external website, and that data needs
to be cleaned and sanitized a lot. Not wanting to create exotic custom
types for each data item, I tried to use 'around" method modifiers to
mangle the data.

Example:
around 'kdnr' => sub {
    my ($org, $self, $value) = @_;
    return $self->kdnr unless $value;

$debugcount++;
warn "in around kdnr $debugcount\n";

    $value = '' unless ($value =~ m/\d{5}/);
    return $self->kdnr($value);
};

This item must be 5 digits, or not present at all, but our customers
manage to enter all kinds of creative stuff here. Checking on the
website is no option, so I want to do it here.

When reading the data set the debugcounter skyrockets within seconds,
a little bit later I get a "Deep recursion" error and much later the
process is killed.

I am aware that 'around' methods probably aren't the best place to
sanitize data, but how else? Custom types? I have seen a Module
MooseX::Mangle, but I am not sure if this does help me with that
recursion thing.

Ideas, hints? Fundamental misunderstanding on my side when using Moose?

TIA,
Ekki

Reply via email to