This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add the Configure option to enable strict by default in perl programs.
authorTodd Rinaldo <toddr@cpan.org>
Sun, 13 Sep 2020 18:02:25 +0000 (13:02 -0500)
committerSawyer X <xsawyerx@cpan.org>
Tue, 15 Sep 2020 14:37:44 +0000 (17:37 +0300)
Do not set strict by default on -e or -E

This is a development only feature to allow us to clean up blead.

./Configure -Dusedevel -des -Dusedefaultstrict

14 files changed:
Configure
Cross/config.sh-arm-linux
Cross/config.sh-arm-linux-n770
NetWare/config.wc
Porting/Glossary
Porting/config.sh
config_h.SH
configure.com
plan9/config_sh.sample
uconfig.h
uconfig.sh
uconfig64.sh
win32/config.gc
win32/config.vc

index d86b0d6..a01c409 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -234,6 +234,7 @@ useopcode=''
 useposix=''
 extras=''
 d_bsd=''
+usedefaultstrict=''
 d_eunice=''
 d_xenix=''
 eunicefix=''
@@ -20312,6 +20313,34 @@ EOCP
        ;;
 esac
 
+: Ask about strict by default.
+case "$usedefaultstrict" in
+    $define|true|[Yy]*)
+       dflt="y"
+       ;;
+    *)
+       dflt="n"
+       ;;
+    esac
+
+cat <<EOM
+
+EXPERIMENTAL: Perl can now be built with strict on by default when not
+invoked with -e or -E. This is a diagnostic tool for development.
+
+Unless you are familiar with this feature, you should probably answer 'no'.
+
+EOM
+
+rp='Would you like to build perl with strict enabled by default?'
+. ./myread
+case "$ans" in
+y|Y) val="$define" ;;
+*)   val="$undef"  ;;
+esac
+set usedefaultstrict
+eval $setvar
+
 : Include . in @INC
 $cat <<EOM
 
@@ -24168,6 +24197,7 @@ d_eofnblk='$d_eofnblk'
 d_erf='$d_erf'
 d_erfc='$d_erfc'
 d_eunice='$d_eunice'
+usedefaultstrict='$usedefaultstrict'
 d_exp2='$d_exp2'
 d_expm1='$d_expm1'
 d_faststdio='$d_faststdio'
index 97b9255..f340c8a 100644 (file)
@@ -1124,6 +1124,7 @@ use64bitall='undef'
 use64bitint='undef'
 usecbacktrace='undef'
 usecrosscompile='undef'
+usedefaultstrict='undef'
 usedevel='undef'
 usedl='define'
 usedtrace='undef'
index a2b9c54..5e15e32 100644 (file)
@@ -1122,6 +1122,7 @@ use64bitall='undef'
 use64bitint='undef'
 usecbacktrace='undef'
 usecrosscompile='undef'
+usedefaultstrict='undef'
 usedevel='undef'
 usedl='define'
 usedtrace='undef'
index 78de6d3..5f55e12 100644 (file)
@@ -1087,6 +1087,7 @@ use64bitall='undef'
 use64bitint='undef'
 usecbacktrace='undef'
 usecrosscompile='undef'
+usedefaultstrict='undef'
 usedevel='undef'
 usedl='define'
 usedtrace='undef'
index f70343e..ce3a86b 100644 (file)
@@ -5547,6 +5547,11 @@ usecrosscompile (Cross.U):
        This variable conditionally defines the USE_CROSS_COMPILE symbol,
        and indicates that Perl has been cross-compiled.
 
+usedefaultstrict (usedefaultstrict.U):
+       This setting provides a mechanism for perl developers to enable
+       strict by default. These defaults do not apply when perl is run
+    via -e or -E.
+
 usedevel (Devel.U):
        This variable indicates that Perl was configured with development
        features enabled.  This should not be done for production builds.
index 05221be..588600d 100644 (file)
@@ -1158,6 +1158,7 @@ use64bitall='define'
 use64bitint='define'
 usecbacktrace='undef'
 usecrosscompile='undef'
+usedefaultstrict='undef'
 usedevel='define'
 usedl='define'
 usedtrace='undef'
index f3910f6..c8313ec 100755 (executable)
@@ -3603,6 +3603,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$default_inc_excludes_dot DEFAULT_INC_EXCLUDES_DOT    /**/
 
+/* USE_STRICT_BY_DEFAULT
+ *     This symbol, if defined, enables additional defaults.
+ *     At this time it only enables implicit strict by default.
+ */
+#$usedefaultstrict USE_STRICT_BY_DEFAULT       /* use strict by default */
+
 /* USE_DYNAMIC_LOADING:
  *     This symbol, if defined, indicates that dynamic loading of
  *     some sort is available.
index 20fc059..e7ea8b9 100644 (file)
@@ -6988,6 +6988,7 @@ $ WC "use64bitall='" + use64bitall + "'"
 $ WC "use64bitint='" + use64bitint + "'"
 $ WC "usecasesensitive='" + be_case_sensitive + "'"    ! VMS-specific
 $ WC "usedebugging_perl='"+use_debugging_perl+"'"
+$ WC "usedefaultstrict='undef'"
 $ WC "usedefaulttypes='" + usedefaulttypes + "'"    ! VMS-specific
 $ WC "usecbacktrace='undef'"
 $ WC "usecrosscompile='undef'"
index 29bd37d..528e044 100644 (file)
@@ -1095,6 +1095,7 @@ use64bitall='undef'
 use64bitint='undef'
 usecbacktrace='undef'
 usecrosscompile='undef'
+usedefaultstrict='undef'
 usedevel='undef'
 usedl='undef'
 usedtrace='undef'
index b89d8cd..0d11b39 100644 (file)
--- a/uconfig.h
+++ b/uconfig.h
  */
 /*#define DEFAULT_INC_EXCLUDES_DOT     / **/
 
+/* USE_STRICT_BY_DEFAULT
+ *     This symbol, if defined, enables additional defaults.
+ *     At this time it only enables implicit strict by default.
+ */
+/*#define USE_STRICT_BY_DEFAULT        / * use strict by default */
+
 /* USE_DYNAMIC_LOADING:
  *     This symbol, if defined, indicates that dynamic loading of
  *     some sort is available.
 #endif
 
 /* Generated from:
- * 58be2e8a7742878937c4392bd15fffc7d0b555bedc9d028c791ea9b525806d52 config_h.SH
- * 0328fd317c240be96131cf63f152ee17113e74b68e3dc0000e2876b9a0023713 uconfig.sh
+ * 01e063baa480bd3d905cba5dd04b87cd95a1053e64a1cc35884563a66548975e config_h.SH
+ * 4c3159a6a9875b7811c2a920d7936d5199193afdb163473c313b9531ba2c0648 uconfig.sh
  * ex: set ro: */
index a8a0714..7747dd6 100644 (file)
@@ -878,6 +878,7 @@ use64bitall='undef'
 use64bitint='undef'
 usecbacktrace='undef'
 usecrosscompile='undef'
+usedefaultstrict='undef'
 usedevel='undef'
 usedl='undef'
 usedtrace='undef'
index 2716afc..f87cb05 100644 (file)
@@ -878,6 +878,7 @@ use64bitall='define'
 use64bitint='define'
 usecbacktrace='undef'
 usecrosscompile='undef'
+usedefaultstrict='undef'
 usedevel='undef'
 usedl='undef'
 usedtrace='undef'
index e263747..b0af7d4 100644 (file)
@@ -1119,6 +1119,7 @@ use64bitall='undef'
 use64bitint='undef'
 usecbacktrace='undef'
 usecrosscompile='undef'
+usedefaultstrict='undef'
 usedevel='undef'
 usedl='define'
 usedtrace='undef'
index b166ea1..234de8d 100644 (file)
@@ -1118,6 +1118,7 @@ use64bitall='undef'
 use64bitint='undef'
 usecbacktrace='undef'
 usecrosscompile='undef'
+usedefaultstrict='undef'
 usedevel='undef'
 usedl='define'
 usedtrace='undef'