Re: [Newb] Mangling parameters, avoiding recursions?
[email protected] ("Ekki Plicht (DF4OR)")
| Newsgroups | perl.moose |
|---|---|
| Message-ID | <CAMmwEgNo6T3Jha-ibQjArD1vkWLO_e-=qT=Xj-Nx7ctvsGy=xQ@mail.gmail.com> |
Hi Chris, On Sat, Jul 9, 2011 at 00:01, Chris Prather <[email protected]> wrote: > On Fri, Jul 8, 2011 at 5:04 PM, Ekki Plicht (DF4OR) <[email protected]> wrote: > >>> Also, keep in mind that you can use coercions: >>> >>> http://search.cpan.org/dist/Moose/lib/Moose/Cookbook/Basics/Recipe5.pod >> >> Right, that's where I had an issue before. As a beginner with Moose I >> abandoned my attempt and went with around modifiers for the time >> being. > > What issues? > > Coercions really are the best answer for data scrubbing unless there > is an overriding issue why they couldn't be used. Overriding issues in > this case are the exceptional minority. From an earlier draft concerning these issues: Hi. Playing around with subtypes, just for the sake of learning. Several attributes of my class should be a bool, but get's thrown at with values like 1, Y, Ja, On for true 0, N, No, Nein, Off. '' (empty string) for false. So I thought that an own subtype + coercion should help here: ---------------- subtype 'MyBool', as 'Str', where { $_ =~ m/^j|^y|1|^on|^n|0|^off|\A\z/i }; coerce 'MyBool', from 'Str', via { ($_ =~ m/^j|^y|^on|1/i) ? 1 : 0 ; }; has 'isvalid' => (is => 'rw', isa => 'MyBool', default => 0, coerce => 1); ---------------- 'isvalid' has no before, after or around modifier applied to. Still my attribute receives and stores the original strings like 'On', 'N' etc. instead of just 0 or 1. So the coercion doesn't work. The where clause does work, tried that with various test inputs. Where am I wrong? TIA, Ekki