diff -up perl4caml-0.9.5/perl_c.c.orig perl4caml-0.9.5/perl_c.c
--- perl4caml-0.9.5/perl_c.c.orig	2008-03-01 14:02:21.000000000 +0100
+++ perl4caml-0.9.5/perl_c.c	2010-06-02 13:52:42.609542680 +0200
@@ -199,12 +199,17 @@ perl4caml_sv_no (value unit)
 static int
 sv_type (SV *sv)
 {
+#if PERL_VERSION >= 11
+  if (SvROK(sv)) return 4;
+#endif
   switch (SvTYPE (sv))
     {
     case SVt_IV: return 1;
     case SVt_NV: return 2;
     case SVt_PV: return 3;
+#if PERL_VERSION < 11
     case SVt_RV: return 4;
+#endif
     case SVt_PVAV: return 5;
     case SVt_PVHV: return 6;
     case SVt_PVCV: return 7;
@@ -302,7 +307,9 @@ perl4caml_deref (value svv)
   case SVt_IV:
   case SVt_NV:
   case SVt_PV:
+#if PERL_VERSION < 11
   case SVt_RV:
+#endif
   case SVt_PVMG:
     break;
   default:
