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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.