This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
make <expr> always overload if expr is overloaded
[perl5.git] / perl.c
diff --git a/perl.c b/perl.c
index 8ed0960..d2571a8 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -754,7 +754,6 @@ perl_destruct(pTHXx)
     SvREFCNT_dec(PL_main_cv);
     PL_main_cv = NULL;
     PL_phase = PERL_PHASE_DESTRUCT;
-    PL_dirty = TRUE;
 
     /* Tell PerlIO we are about to tear things apart in case
        we have layers which are using resources that should
@@ -3049,11 +3048,21 @@ Perl_moreswitches(pTHX_ const char *s)
        /* The following permits -d:Mod to accepts arguments following an =
           in the fashion that -MSome::Mod does. */
        if (*s == ':' || *s == '=') {
-           const char *start = ++s;
-           const char *const end = s + strlen(s);
-           SV * const sv = newSVpvs("use Devel::");
+           const char *start;
+           const char *end;
+           SV *sv;
+
+           if (*++s == '-') {
+               ++s;
+               sv = newSVpvs("no Devel::");
+           } else {
+               sv = newSVpvs("use Devel::");
+           }
+
+           start = s;
+           end = s + strlen(s);
 
-           /* We now allow -d:Module=Foo,Bar */
+           /* We now allow -d:Module=Foo,Bar and -d:-Module */
            while(isALNUM(*s) || *s==':') ++s;
            if (*s != '=')
                sv_catpvn(sv, start, end - start);