$work = new Transaction($request) #### sub new { my($r) = @_; if (&test($r)) { return new TransactionA($r); } else { return new TransactionB($r); } }