Subject: | GLOB-based operations fail on objects drived from IO::Handle |
Hi,
when the dependency to Scalar::Util was reduced by introducing
sub _is_glob{...}
some of my objects that were derived from IO::File stopped working (okay: 1.17).
This happens when the derived object is not detected as GLOB because the
class-/package-name does not start with "IO::".
The bug becomes visible when i.e. LoadFile( $io_handle_based_obj ) is invoked.
'SomeClass::DerivedFromIO=GLOB(0x9b9670)' is empty or non-existent at .../YAML/Syck.pm line 129
The following patch, applied to 1.29 fixed the problem - at least for me:
-- Syck.pm.orig 2015-02-26 13:58:50.155024000 +0100
+++ Syck.pm 2015-02-26 13:57:00.326681000 +0100
@@ -88,6 +88,10 @@
return 1 if ( ref( \$h ) eq 'GLOB' );
return 1 if ( ref($h) =~ m/^IO::/ );
+#BEGIN-PATCH
+ return 1 if ( ref($h) and $h->isa('IO::Handle') );
+#END-PATCH
+
return;
}
Thanks
Perlbotics