in reply to Re: Object::InsideOut field type validation
in thread Object::InsideOut field type validation

TFT ikegami, I knew it would be something simple.

Having said that, the problem can be removed by including no warnings; in the code ...

sub validate_max_size { my $val = shift; no warnings; ! defined $val || $val > 0; }
gets rid of the problem ... or at least allows a different problem to surface in my test harness ;-)

A user level that continues to overstate my experience :-))

Replies are listed 'Best First'.
Re^3: Object::InsideOut field type validation
by gone2015 (Deacon) on Feb 05, 2009 at 20:51 UTC

    I don't get it :-( I tried:

    use strict ; use warnings ; try() ; # none: 1 try(undef) ; # undef: 1 try(-1) ; # -1: 0 try(0) ; # 0: 0 try(1) ; # 1: 1 sub try { my ($s) = @_ ; my $r = validate_max_size(@_) ; if (@_ == 0) { $s = "none" ; } elsif (!defined($s)) { $s = "undef" ; } ; printf "%8s: %d\n", $s, $r+0 ; } ; sub validate_max_size { my $val = shift; ! defined $val || $val > 0; }
    on perl 5.10.0, and got no warnings...

    I don't know if there's an ointment for bracket-alergy as extreme as this... I would write:

    !defined($val) || ($val > 0) ;
    'cos I'm comfortable with unaries binding tighter than binaries... but the effect is the same as what you writ.

    Wait a tick... this gives the error you mentioned:

    try('undef') ; # Argument "undef" isn't numeric in numeric gt (>) . +..
    could it be that somebody, somewhere, is mapping undef to 'undef' ?