$obj = Win32::Foo->new("create me"); #new returned a blessed object $obj = Win32::Foo->new("dont create me"); #new returned undef and LastError has failure code, DESTROY of "create me" fires, changes LastError if(! defined $obj){ #$^E happens to be ERROR_SUCCESS (it is actually undefined/random), programmer pounds head on keyboard screaming WHY ME!!!! die "creating obj failed ".($^E+0); }