Updates to perlfunc.pod
[p5sagit/p5-mst-13.2.git] / gv.c
diff --git a/gv.c b/gv.c
index 4cfb584..62afd91 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -341,7 +341,7 @@ I32 create;
 #ifdef VMS
        warn("Weird package name \"%s\" truncated", name);
 #else
-       warn("Weird package name \"%.*s...\" truncated", namelen, name);
+       warn("Weird package name \"%.*s...\" truncated", (int)namelen, name);
 #endif
     }
     Copy(name,tmpbuf,namelen,char);
@@ -636,6 +636,14 @@ I32 sv_type;
        sv_setpv(GvSV(gv),chopset);
        goto magicalize;
 
+    case '?':
+       if (len > 1)
+           break;
+#ifdef COMPLEX_STATUS
+       sv_upgrade(GvSV(gv), SVt_PVLV);
+#endif
+       goto magicalize;
+
     case '#':
     case '*':
        if (dowarn && len == 1 && sv_type == SVt_PV)
@@ -643,7 +651,6 @@ I32 sv_type;
        /* FALL THROUGH */
     case '[':
     case '!':
-    case '?':
     case '^':
     case '~':
     case '=':
@@ -701,10 +708,11 @@ I32 sv_type;
        break;
     case ']':
        if (len == 1) {
-           SV *sv;
-           sv = GvSV(gv);
+           SV *sv = GvSV(gv);
            sv_upgrade(sv, SVt_PVNV);
            sv_setpv(sv, patchlevel);
+           (void)sv_2nv(sv);
+           SvREADONLY_on(sv);
        }
        break;
     }
@@ -1308,11 +1316,6 @@ int flags;
     res=POPs;
     PUTBACK;
 
-    if (notfound) {
-      /* sv_2mortal(res); */
-      return NULL;
-    }
-
     if (postpr) {
       int ans;
       switch (method) {