push @{ $parent->{children} }, $child; weaken( $child->{parent} = $parent ); # Needed to avoid memory leak. #### { Resource res = get_resource_exclusively(res_id); // ... res.release(); // Needed or the next line might fail. } { Resource res = get_resource_exclusively(res_id); // ... res.release(); } #### Resource res = get_resource_exclusively(res_id); try { // ... } catch (Exception e) { res.release(); throw e; }