http://qs321.pair.com?node_id=1219405


in reply to Re^3: Avoiding perl's Atof when assigning floating point values
in thread Avoiding perl's Atof when assigning floating point values

Hi! Running the code you offered (in a container, though), I've got:

lib/locale ..................................................... FAILE +D at test 427 lib/locale_threads ............................................. skipp +ed
I'm running Debian 9.4; my locale is ru_RU.UTF-8. The failures might be related to the fact the my locale (like some European ones) uses a comma (,) as decimal separator1, unlike a dot (.) as expected by "C" locale: https://paste.debian.net/1035555/ (a PM post doesn't seem to be enough for this log).

Here is my %Config, as obtained by cd t; ./perl -I../lib -MData::Dumper -MConfig -e'print Dumper \%Config':

$VAR1 = { 'Author' => '', 'CONFIG' => 'true', 'Date' => '', 'Header' => '', 'Id' => '', 'Locker' => '', 'Log' => '', 'PATCHLEVEL' => '29', 'PERL_API_REVISION' => '5', 'PERL_API_SUBVERSION' => '2', 'PERL_API_VERSION' => '29', 'PERL_CONFIG_SH' => 'true', 'PERL_PATCHLEVEL' => '', 'PERL_REVISION' => '5', 'PERL_SUBVERSION' => '2', 'PERL_VERSION' => '29', 'RCSfile' => '', 'Revision' => '', 'SUBVERSION' => '2', 'Source' => '', 'State' => '', '_a' => '.a', '_exe' => '', '_o' => '.o', 'afs' => 'false', 'afsroot' => '/afs', 'alignbytes' => '8', 'aphostname' => '/bin/hostname', 'api_revision' => '5', 'api_subversion' => '2', 'api_version' => '29', 'api_versionstring' => '5.29.2', 'ar' => 'ar', 'archlib' => '/usr/local/lib/perl5/5.29.2/x86_64-linux', 'archlibexp' => '/usr/local/lib/perl5/5.29.2/x86_64-linux', 'archname' => 'x86_64-linux', 'archname64' => '', 'archobjs' => '', 'asctime_r_proto' => '0', 'awk' => 'awk', 'baserev' => '5.0', 'bash' => '', 'bin' => '/usr/local/bin', 'bin_ELF' => 'define', 'binexp' => '/usr/local/bin', 'bison' => 'bison', 'byacc' => 'byacc', 'byteorder' => '12345678', 'c' => '', 'castflags' => '0', 'cat' => 'cat', 'cc' => 'cc', 'cccdlflags' => '-fPIC', 'ccdlflags' => '-Wl,-E', 'ccflags' => '-fwrapv -fno-strict-aliasing -pipe -fstack-pro +tector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET +_BITS=64 -D_FORTIFY_SOURCE=2', 'ccflags_uselargefiles' => '-D_LARGEFILE_SOURCE -D_FILE_OFFS +ET_BITS=64', 'ccname' => 'gcc', 'ccsymbols' => '', 'ccversion' => '', 'cf_by' => 'aitap', 'cf_email' => 'aitap@scratch.(none)', 'cf_time' => 'Sat Jul 28 13:21:21 UTC 2018', 'charbits' => '8', 'charsize' => '1', 'chgrp' => '', 'chmod' => 'chmod', 'chown' => '', 'clocktype' => 'clock_t', 'comm' => 'comm', 'compress' => '', 'config_arg0' => 'Configure', 'config_arg1' => '-des', 'config_arg2' => '-Dusedevel', 'config_arg3' => '-Duse64bitall', 'config_argc' => '3', 'config_args' => '-des -Dusedevel -Duse64bitall', 'contains' => 'grep', 'cp' => 'cp', 'cpio' => '', 'cpp' => 'cpp', 'cpp_stuff' => '42', 'cppccsymbols' => '', 'cppflags' => '-fwrapv -fno-strict-aliasing -pipe -fstack-pr +otector-strong -I/usr/local/include', 'cpplast' => '-', 'cppminus' => '-', 'cpprun' => 'cc -E', 'cppstdin' => 'cc -E', 'cppsymbols' => '__amd64=1 __amd64__=1 __ATOMIC_ACQ_REL=4 __ +ATOMIC_ACQUIRE=2 __ATOMIC_CONSUME=1 __ATOMIC_HLE_ACQUIRE=65536 __ATOM +IC_HLE_RELEASE=131072 __ATOMIC_RELAXED=0 __ATOMIC_RELEASE=3 __ATOMIC_ +SEQ_CST=5 __BIGGEST_ALIGNMENT__=16 __BYTE_ORDER__=1234 __CHAR16_TYPE_ +_=short\\ unsigned\\ int __CHAR32_TYPE__=unsigned\\ int __CHAR_BIT__= +8 __code_model_small__=1 __DBL_DECIMAL_DIG__=17 __DBL_DENORM_MIN__=(( +double)4.94065645841246544177e-324L) __DBL_DIG__=15 __DBL_EPSILON__=( +(double)2.22044604925031308085e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_I +NFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_MANT_DIG__=53 __DBL_MAX_10_ +EXP__=308 __DBL_MAX__=((double)1.79769313486231570815e+308L) __DBL_MA +X_EXP__=1024 __DBL_MIN_10_EXP__=(-307) __DBL_MIN__=((double)2.2250738 +5850720138309e-308L) __DBL_MIN_EXP__=(-1021) __DEC128_EPSILON__=1E-33 +DL __DEC128_MANT_DIG__=34 __DEC128_MAX__=9.99999999999999999999999999 +9999999E6144DL __DEC128_MAX_EXP__=6145 __DEC128_MIN__=1E-6143DL __DEC +128_MIN_EXP__=(-6142) __DEC128_SUBNORMAL_MIN__=0.00000000000000000000 +0000000000001E-6143DL __DEC32_EPSILON__=1E-6DF __DEC32_MANT_DIG__=7 _ +_DEC32_MAX__=9.999999E96DF __DEC32_MAX_EXP__=97 __DEC32_MIN__=1E-95DF + __DEC32_MIN_EXP__=(-94) __DEC32_SUBNORMAL_MIN__=0.000001E-95DF __DEC +64_EPSILON__=1E-15DD __DEC64_MANT_DIG__=16 __DEC64_MAX__=9.9999999999 +99999E384DD __DEC64_MAX_EXP__=385 __DEC64_MIN__=1E-383DD __DEC64_MIN_ +EXP__=(-382) __DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD __DEC_E +VAL_METHOD__=2 __DECIMAL_BID_FORMAT__=1 __DECIMAL_DIG__=21 __ELF__=1 +_FILE_OFFSET_BITS=64 __FINITE_MATH_ONLY__=0 __FLOAT_WORD_ORDER__=1234 + __FLT_DECIMAL_DIG__=9 __FLT_DENORM_MIN__=1.40129846432481707092e-45F + __FLT_DIG__=6 __FLT_EPSILON__=1.19209289550781250000e-7F __FLT_EVAL_ +METHOD__=0 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIE +T_NAN__=1 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX__=3.402 +82346638528859812e+38F __FLT_MAX_EXP__=128 __FLT_MIN_10_EXP__=(-37) _ +_FLT_MIN__=1.17549435082228750797e-38F __FLT_MIN_EXP__=(-125) __FLT_R +ADIX__=2 __FXSR__=1 __GCC_ASM_FLAG_OUTPUTS__=1 __GCC_ATOMIC_BOOL_LOCK +_FREE=2 __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR32_T_LOCK_ +FREE=2 __GCC_ATOMIC_CHAR_LOCK_FREE=2 __GCC_ATOMIC_INT_LOCK_FREE=2 __G +CC_ATOMIC_LLONG_LOCK_FREE=2 __GCC_ATOMIC_LONG_LOCK_FREE=2 __GCC_ATOMI +C_POINTER_LOCK_FREE=2 __GCC_ATOMIC_SHORT_LOCK_FREE=2 __GCC_ATOMIC_TES +T_AND_SET_TRUEVAL=1 __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 __GCC_HAVE_DWARF +2_CFI_ASM=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1 __GCC_HAVE_SYNC_COMP +ARE_AND_SWAP_2=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_HAVE_SYNC +_COMPARE_AND_SWAP_8=1 __GCC_IEC_559=2 __GCC_IEC_559_COMPLEX=2 __GLIBC +__=2 __GLIBC_MINOR__=24 __GNUC__=6 __GNUC_MINOR__=3 __GNUC_PATCHLEVEL +__=0 __GNUC_STDC_INLINE__=1 __GNU_LIBRARY__=6 __gnu_linux__=1 __GXX_A +BI_VERSION=1010 __has_include=__has_include __has_include_next=__has_ +include_next __INT16_C=__INT16_C __INT16_MAX__=0x7fff __INT16_TYPE__= +short\\ int __INT32_C=__INT32_C __INT32_MAX__=0x7fffffff __INT32_TYPE +__=int __INT64_C=__INT64_C __INT64_MAX__=0x7fffffffffffffffL __INT64_ +TYPE__=long\\ int __INT8_C=__INT8_C __INT8_MAX__=0x7f __INT8_TYPE__=s +igned\\ char __INT_FAST16_MAX__=0x7fffffffffffffffL __INT_FAST16_TYPE +__=long\\ int __INT_FAST32_MAX__=0x7fffffffffffffffL __INT_FAST32_TYP +E__=long\\ int __INT_FAST64_MAX__=0x7fffffffffffffffL __INT_FAST64_TY +PE__=long\\ int __INT_FAST8_MAX__=0x7f __INT_FAST8_TYPE__=signed\\ ch +ar __INT_LEAST16_MAX__=0x7fff __INT_LEAST16_TYPE__=short\\ int __INT_ +LEAST32_MAX__=0x7fffffff __INT_LEAST32_TYPE__=int __INT_LEAST64_MAX__ +=0x7fffffffffffffffL __INT_LEAST64_TYPE__=long\\ int __INT_LEAST8_MAX +__=0x7f __INT_LEAST8_TYPE__=signed\\ char __INT_MAX__=0x7fffffff __IN +TMAX_C=__INTMAX_C __INTMAX_MAX__=0x7fffffffffffffffL __INTMAX_TYPE__= +long\\ int __INTPTR_MAX__=0x7fffffffffffffffL __INTPTR_TYPE__=long\\ +int __k8=1 __k8__=1 _LARGEFILE_SOURCE=1 __LDBL_DENORM_MIN__=3.6451995 +3188247460253e-4951L __LDBL_DIG__=18 __LDBL_EPSILON__=1.0842021724855 +0443401e-19L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS +_QUIET_NAN__=1 __LDBL_MANT_DIG__=64 __LDBL_MAX_10_EXP__=4932 __LDBL_M +AX__=1.18973149535723176502e+4932L __LDBL_MAX_EXP__=16384 __LDBL_MIN_ +10_EXP__=(-4931) __LDBL_MIN__=3.36210314311209350626e-4932L __LDBL_MI +N_EXP__=(-16381) __linux=1 __linux__=1 linux=1 __LONG_LONG_MAX__=0x7f +ffffffffffffffLL __LONG_MAX__=0x7fffffffffffffffL __LP64__=1 _LP64=1 +__MMX__=1 __ORDER_BIG_ENDIAN__=4321 __ORDER_LITTLE_ENDIAN__=1234 __OR +DER_PDP_ENDIAN__=3412 __pic__=2 __PIC__=2 __pie__=2 __PIE__=2 _POSIX_ +C_SOURCE=200809L _POSIX_SOURCE=1 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIF +F_MAX__=0x7fffffffffffffffL __PTRDIFF_TYPE__=long\\ int __REGISTER_PR +EFIX__= __SCHAR_MAX__=0x7f __SEG_FS=1 __SEG_GS=1 __SHRT_MAX__=0x7fff +__SIG_ATOMIC_MAX__=0x7fffffff __SIG_ATOMIC_MIN__=(-0x7fffffff\\ -\\ 1 +) __SIG_ATOMIC_TYPE__=int __SIZE_MAX__=0xffffffffffffffffUL __SIZEOF_ +DOUBLE__=8 __SIZEOF_FLOAT128__=16 __SIZEOF_FLOAT__=4 __SIZEOF_FLOAT80 +__=16 __SIZEOF_INT128__=16 __SIZEOF_INT__=4 __SIZEOF_LONG__=8 __SIZEO +F_LONG_DOUBLE__=16 __SIZEOF_LONG_LONG__=8 __SIZEOF_POINTER__=8 __SIZE +OF_PTRDIFF_T__=8 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=8 __SIZEOF_WCHA +R_T__=4 __SIZEOF_WINT_T__=4 __SIZE_TYPE__=long\\ unsigned\\ int __SSE +__=1 __SSE2__=1 __SSE2_MATH__=1 __SSE_MATH__=1 __STDC__=1 __STDC_HOST +ED__=1 __STDC_IEC_559__=1 __STDC_IEC_559_COMPLEX__=1 __STDC_ISO_10646 +__=201605L __STDC_NO_THREADS__=1 _STDC_PREDEF_H=1 __STDC_UTF_16__=1 _ +_STDC_UTF_32__=1 __STDC_VERSION__=201112L __UINT16_C=__UINT16_C __UIN +T16_MAX__=0xffff __UINT16_TYPE__=short\\ unsigned\\ int __UINT32_C=__ +UINT32_C __UINT32_MAX__=0xffffffffU __UINT32_TYPE__=unsigned\\ int __ +UINT64_C=__UINT64_C __UINT64_MAX__=0xffffffffffffffffUL __UINT64_TYPE +__=long\\ unsigned\\ int __UINT8_C=__UINT8_C __UINT8_MAX__=0xff __UIN +T8_TYPE__=unsigned\\ char __UINT_FAST16_MAX__=0xffffffffffffffffUL __ +UINT_FAST16_TYPE__=long\\ unsigned\\ int __UINT_FAST32_MAX__=0xffffff +ffffffffffUL __UINT_FAST32_TYPE__=long\\ unsigned\\ int __UINT_FAST64 +_MAX__=0xffffffffffffffffUL __UINT_FAST64_TYPE__=long\\ unsigned\\ in +t __UINT_FAST8_MAX__=0xff __UINT_FAST8_TYPE__=unsigned\\ char __UINT_ +LEAST16_MAX__=0xffff __UINT_LEAST16_TYPE__=short\\ unsigned\\ int __U +INT_LEAST32_MAX__=0xffffffffU __UINT_LEAST32_TYPE__=unsigned\\ int __ +UINT_LEAST64_MAX__=0xffffffffffffffffUL __UINT_LEAST64_TYPE__=long\\ +unsigned\\ int __UINT_LEAST8_MAX__=0xff __UINT_LEAST8_TYPE__=unsigned +\\ char __UINTMAX_C=__UINTMAX_C __UINTMAX_MAX__=0xffffffffffffffffUL +__UINTMAX_TYPE__=long\\ unsigned\\ int __UINTPTR_MAX__=0xffffffffffff +ffffUL __UINTPTR_TYPE__=long\\ unsigned\\ int __unix=1 __unix__=1 uni +x=1 __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX= +1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USER_LABEL +_PREFIX__= __VERSION__="6.3.0\\ 20170516" __WCHAR_MAX__=0x7fffffff __ +WCHAR_MIN__=(-0x7fffffff\\ -\\ 1) __WCHAR_TYPE__=int __WINT_MAX__=0xf +fffffffU __WINT_MIN__=0U __WINT_TYPE__=unsigned\\ int __x86_64=1 __x8 +6_64__=1', 'crypt_r_proto' => '0', 'cryptlib' => '', 'csh' => 'csh', 'ctermid_r_proto' => '0', 'ctime_r_proto' => '0', 'd_Gconvert' => 'gcvt((x),(n),(b))', 'd_PRIEUldbl' => 'define', 'd_PRIFUldbl' => 'define', 'd_PRIGUldbl' => 'define', 'd_PRIXU64' => 'define', 'd_PRId64' => 'define', 'd_PRIeldbl' => 'define', 'd_PRIfldbl' => 'define', 'd_PRIgldbl' => 'define', 'd_PRIi64' => 'define', 'd_PRIo64' => 'define', 'd_PRIu64' => 'define', 'd_PRIx64' => 'define', 'd_SCNfldbl' => 'define', 'd__fwalk' => undef, 'd_accept4' => 'define', 'd_access' => 'define', 'd_accessx' => undef, 'd_acosh' => 'define', 'd_aintl' => undef, 'd_alarm' => 'define', 'd_archlib' => 'define', 'd_asctime64' => undef, 'd_asctime_r' => undef, 'd_asinh' => 'define', 'd_atanh' => 'define', 'd_atolf' => undef, 'd_atoll' => 'define', 'd_attribute_deprecated' => 'define', 'd_attribute_format' => 'define', 'd_attribute_malloc' => 'define', 'd_attribute_nonnull' => 'define', 'd_attribute_noreturn' => 'define', 'd_attribute_pure' => 'define', 'd_attribute_unused' => 'define', 'd_attribute_warn_unused_result' => 'define', 'd_backtrace' => 'define', 'd_bsd' => undef, 'd_bsdgetpgrp' => undef, 'd_bsdsetpgrp' => undef, 'd_builtin_add_overflow' => 'define', 'd_builtin_choose_expr' => 'define', 'd_builtin_expect' => 'define', 'd_builtin_mul_overflow' => 'define', 'd_builtin_sub_overflow' => 'define', 'd_c99_variadic_macros' => 'define', 'd_casti32' => undef, 'd_castneg' => 'define', 'd_cbrt' => 'define', 'd_chown' => 'define', 'd_chroot' => 'define', 'd_chsize' => undef, 'd_class' => undef, 'd_clearenv' => 'define', 'd_closedir' => 'define', 'd_cmsghdr_s' => 'define', 'd_const' => 'define', 'd_copysign' => 'define', 'd_copysignl' => 'define', 'd_cplusplus' => undef, 'd_crypt' => 'define', 'd_crypt_r' => undef, 'd_csh' => undef, 'd_ctermid' => 'define', 'd_ctermid_r' => undef, 'd_ctime64' => undef, 'd_ctime_r' => undef, 'd_cuserid' => 'define', 'd_dbminitproto' => undef, 'd_difftime' => 'define', 'd_difftime64' => undef, 'd_dir_dd_fd' => undef, 'd_dirfd' => 'define', 'd_dirnamlen' => undef, 'd_dladdr' => 'define', 'd_dlerror' => 'define', 'd_dlopen' => 'define', 'd_dlsymun' => undef, 'd_dosuid' => undef, 'd_double_has_inf' => 'define', 'd_double_has_nan' => 'define', 'd_double_has_negative_zero' => 'define', 'd_double_has_subnormals' => 'define', 'd_double_style_cray' => undef, 'd_double_style_ibm' => undef, 'd_double_style_ieee' => 'define', 'd_double_style_vax' => undef, 'd_drand48_r' => undef, 'd_drand48proto' => 'define', 'd_dup2' => 'define', 'd_dup3' => 'define', 'd_duplocale' => 'define', 'd_eaccess' => 'define', 'd_endgrent' => 'define', 'd_endgrent_r' => undef, 'd_endhent' => 'define', 'd_endhostent_r' => undef, 'd_endnent' => 'define', 'd_endnetent_r' => undef, 'd_endpent' => 'define', 'd_endprotoent_r' => undef, 'd_endpwent' => 'define', 'd_endpwent_r' => undef, 'd_endsent' => 'define', 'd_endservent_r' => undef, 'd_eofnblk' => 'define', 'd_erf' => 'define', 'd_erfc' => 'define', 'd_eunice' => undef, 'd_exp2' => 'define', 'd_expm1' => 'define', 'd_faststdio' => undef, 'd_fchdir' => 'define', 'd_fchmod' => 'define', 'd_fchmodat' => 'define', 'd_fchown' => 'define', 'd_fcntl' => 'define', 'd_fcntl_can_lock' => 'define', 'd_fd_macros' => 'define', 'd_fd_set' => 'define', 'd_fdclose' => undef, 'd_fdim' => 'define', 'd_fds_bits' => undef, 'd_fegetround' => 'define', 'd_fgetpos' => 'define', 'd_finite' => 'define', 'd_finitel' => 'define', 'd_flexfnam' => 'define', 'd_flock' => 'define', 'd_flockproto' => 'define', 'd_fma' => 'define', 'd_fmax' => 'define', 'd_fmin' => 'define', 'd_fork' => 'define', 'd_fp_class' => undef, 'd_fp_classify' => undef, 'd_fp_classl' => undef, 'd_fpathconf' => 'define', 'd_fpclass' => undef, 'd_fpclassify' => 'define', 'd_fpclassl' => undef, 'd_fpgetround' => undef, 'd_fpos64_t' => undef, 'd_freelocale' => 'define', 'd_frexpl' => 'define', 'd_fs_data_s' => undef, 'd_fseeko' => 'define', 'd_fsetpos' => 'define', 'd_fstatfs' => 'define', 'd_fstatvfs' => 'define', 'd_fsync' => 'define', 'd_ftello' => 'define', 'd_ftime' => undef, 'd_futimes' => 'define', 'd_gai_strerror' => 'define', 'd_gdbm_ndbm_h_uses_prototypes' => undef, 'd_gdbmndbm_h_uses_prototypes' => undef, 'd_getaddrinfo' => 'define', 'd_getcwd' => 'define', 'd_getespwnam' => undef, 'd_getfsstat' => undef, 'd_getgrent' => 'define', 'd_getgrent_r' => undef, 'd_getgrgid_r' => undef, 'd_getgrnam_r' => undef, 'd_getgrps' => 'define', 'd_gethbyaddr' => 'define', 'd_gethbyname' => 'define', 'd_gethent' => 'define', 'd_gethname' => 'define', 'd_gethostbyaddr_r' => undef, 'd_gethostbyname_r' => undef, 'd_gethostent_r' => undef, 'd_gethostprotos' => 'define', 'd_getitimer' => 'define', 'd_getlogin' => 'define', 'd_getlogin_r' => undef, 'd_getmnt' => undef, 'd_getmntent' => 'define', 'd_getnameinfo' => 'define', 'd_getnbyaddr' => 'define', 'd_getnbyname' => 'define', 'd_getnent' => 'define', 'd_getnetbyaddr_r' => undef, 'd_getnetbyname_r' => undef, 'd_getnetent_r' => undef, 'd_getnetprotos' => 'define', 'd_getpagsz' => 'define', 'd_getpbyname' => 'define', 'd_getpbynumber' => 'define', 'd_getpent' => 'define', 'd_getpgid' => 'define', 'd_getpgrp' => 'define', 'd_getpgrp2' => undef, 'd_getppid' => 'define', 'd_getprior' => 'define', 'd_getprotobyname_r' => undef, 'd_getprotobynumber_r' => undef, 'd_getprotoent_r' => undef, 'd_getprotoprotos' => 'define', 'd_getprpwnam' => undef, 'd_getpwent' => 'define', 'd_getpwent_r' => undef, 'd_getpwnam_r' => undef, 'd_getpwuid_r' => undef, 'd_getsbyname' => 'define', 'd_getsbyport' => 'define', 'd_getsent' => 'define', 'd_getservbyname_r' => undef, 'd_getservbyport_r' => undef, 'd_getservent_r' => undef, 'd_getservprotos' => 'define', 'd_getspnam' => 'define', 'd_getspnam_r' => undef, 'd_gettimeod' => 'define', 'd_gmtime64' => undef, 'd_gmtime_r' => undef, 'd_gnulibc' => 'define', 'd_grpasswd' => 'define', 'd_hasmntopt' => 'define', 'd_htonl' => 'define', 'd_hypot' => 'define', 'd_ilogb' => 'define', 'd_ilogbl' => 'define', 'd_inc_version_list' => undef, 'd_inetaton' => 'define', 'd_inetntop' => 'define', 'd_inetpton' => 'define', 'd_int64_t' => 'define', 'd_ip_mreq' => 'define', 'd_ip_mreq_source' => 'define', 'd_ipv6_mreq' => 'define', 'd_ipv6_mreq_source' => undef, 'd_isascii' => 'define', 'd_isblank' => 'define', 'd_isfinite' => 'define', 'd_isfinitel' => undef, 'd_isinf' => 'define', 'd_isinfl' => 'define', 'd_isless' => undef, 'd_isnan' => 'define', 'd_isnanl' => 'define', 'd_isnormal' => 'define', 'd_j0' => 'define', 'd_j0l' => 'define', 'd_killpg' => 'define', 'd_lc_monetary_2008' => 'define', 'd_lchown' => 'define', 'd_ldbl_dig' => 'define', 'd_ldexpl' => 'define', 'd_lgamma' => 'define', 'd_lgamma_r' => 'define', 'd_libm_lib_version' => 'define', 'd_libname_unique' => undef, 'd_link' => 'define', 'd_linkat' => 'define', 'd_llrint' => 'define', 'd_llrintl' => 'define', 'd_llround' => 'define', 'd_llroundl' => 'define', 'd_localeconv_l' => undef, 'd_localtime64' => undef, 'd_localtime_r' => undef, 'd_localtime_r_needs_tzset' => undef, 'd_locconv' => 'define', 'd_lockf' => 'define', 'd_log1p' => 'define', 'd_log2' => 'define', 'd_logb' => 'define', 'd_long_double_style_ieee' => 'define', 'd_long_double_style_ieee_doubledouble' => undef, 'd_long_double_style_ieee_extended' => 'define', 'd_long_double_style_ieee_std' => undef, 'd_long_double_style_vax' => undef, 'd_longdbl' => 'define', 'd_longlong' => 'define', 'd_lrint' => 'define', 'd_lrintl' => 'define', 'd_lround' => 'define', 'd_lroundl' => 'define', 'd_lseekproto' => 'define', 'd_lstat' => 'define', 'd_madvise' => 'define', 'd_malloc_good_size' => undef, 'd_malloc_size' => undef, 'd_mblen' => 'define', 'd_mbrlen' => 'define', 'd_mbrtowc' => 'define', 'd_mbstowcs' => 'define', 'd_mbtowc' => 'define', 'd_memmem' => 'define', 'd_memrchr' => 'define', 'd_mkdir' => 'define', 'd_mkdtemp' => 'define', 'd_mkfifo' => 'define', 'd_mkostemp' => 'define', 'd_mkstemp' => 'define', 'd_mkstemps' => 'define', 'd_mktime' => 'define', 'd_mktime64' => undef, 'd_mmap' => 'define', 'd_modfl' => 'define', 'd_modflproto' => 'define', 'd_mprotect' => 'define', 'd_msg' => 'define', 'd_msg_ctrunc' => 'define', 'd_msg_dontroute' => 'define', 'd_msg_oob' => 'define', 'd_msg_peek' => 'define', 'd_msg_proxy' => 'define', 'd_msgctl' => 'define', 'd_msgget' => 'define', 'd_msghdr_s' => 'define', 'd_msgrcv' => 'define', 'd_msgsnd' => 'define', 'd_msync' => 'define', 'd_munmap' => 'define', 'd_mymalloc' => undef, 'd_nan' => 'define', 'd_nanosleep' => 'define', 'd_ndbm' => undef, 'd_ndbm_h_uses_prototypes' => undef, 'd_nearbyint' => 'define', 'd_newlocale' => 'define', 'd_nextafter' => 'define', 'd_nexttoward' => 'define', 'd_nice' => 'define', 'd_nl_langinfo' => 'define', 'd_nv_preserves_uv' => undef, 'd_nv_zero_is_allbits_zero' => 'define', 'd_off64_t' => undef, 'd_old_pthread_create_joinable' => undef, 'd_oldpthreads' => undef, 'd_oldsock' => undef, 'd_open3' => 'define', 'd_openat' => 'define', 'd_pathconf' => 'define', 'd_pause' => 'define', 'd_perl_otherlibdirs' => undef, 'd_phostname' => undef, 'd_pipe' => 'define', 'd_pipe2' => 'define', 'd_poll' => 'define', 'd_portable' => 'define', 'd_prctl' => 'define', 'd_prctl_set_name' => 'define', 'd_printf_format_null' => 'define', 'd_procselfexe' => 'define', 'd_pseudofork' => undef, 'd_pthread_atfork' => 'define', 'd_pthread_attr_setscope' => 'define', 'd_pthread_yield' => 'define', 'd_ptrdiff_t' => 'define', 'd_pwage' => undef, 'd_pwchange' => undef, 'd_pwclass' => undef, 'd_pwcomment' => undef, 'd_pwexpire' => undef, 'd_pwgecos' => 'define', 'd_pwpasswd' => 'define', 'd_pwquota' => undef, 'd_qgcvt' => 'define', 'd_quad' => 'define', 'd_querylocale' => undef, 'd_random_r' => undef, 'd_re_comp' => undef, 'd_readdir' => 'define', 'd_readdir64_r' => undef, 'd_readdir_r' => undef, 'd_readlink' => 'define', 'd_readv' => 'define', 'd_recvmsg' => 'define', 'd_regcmp' => undef, 'd_regcomp' => 'define', 'd_remainder' => 'define', 'd_remquo' => 'define', 'd_rename' => 'define', 'd_renameat' => 'define', 'd_rewinddir' => 'define', 'd_rint' => 'define', 'd_rmdir' => 'define', 'd_round' => 'define', 'd_sbrkproto' => 'define', 'd_scalbn' => 'define', 'd_scalbnl' => 'define', 'd_sched_yield' => 'define', 'd_scm_rights' => 'define', 'd_seekdir' => 'define', 'd_select' => 'define', 'd_sem' => 'define', 'd_semctl' => 'define', 'd_semctl_semid_ds' => 'define', 'd_semctl_semun' => 'define', 'd_semget' => 'define', 'd_semop' => 'define', 'd_sendmsg' => 'define', 'd_setegid' => 'define', 'd_seteuid' => 'define', 'd_setgrent' => 'define', 'd_setgrent_r' => undef, 'd_setgrps' => 'define', 'd_sethent' => 'define', 'd_sethostent_r' => undef, 'd_setitimer' => 'define', 'd_setlinebuf' => 'define', 'd_setlocale' => 'define', 'd_setlocale_r' => undef, 'd_setnent' => 'define', 'd_setnetent_r' => undef, 'd_setpent' => 'define', 'd_setpgid' => 'define', 'd_setpgrp' => 'define', 'd_setpgrp2' => undef, 'd_setprior' => 'define', 'd_setproctitle' => undef, 'd_setprotoent_r' => undef, 'd_setpwent' => 'define', 'd_setpwent_r' => undef, 'd_setregid' => 'define', 'd_setresgid' => 'define', 'd_setresuid' => 'define', 'd_setreuid' => 'define', 'd_setrgid' => undef, 'd_setruid' => undef, 'd_setsent' => 'define', 'd_setservent_r' => undef, 'd_setsid' => 'define', 'd_setvbuf' => 'define', 'd_shm' => 'define', 'd_shmat' => 'define', 'd_shmatprototype' => 'define', 'd_shmctl' => 'define', 'd_shmdt' => 'define', 'd_shmget' => 'define', 'd_sigaction' => 'define', 'd_siginfo_si_addr' => 'define', 'd_siginfo_si_band' => 'define', 'd_siginfo_si_errno' => 'define', 'd_siginfo_si_fd' => 'define', 'd_siginfo_si_pid' => 'define', 'd_siginfo_si_status' => 'define', 'd_siginfo_si_uid' => 'define', 'd_siginfo_si_value' => 'define', 'd_signbit' => 'define', 'd_sigprocmask' => 'define', 'd_sigsetjmp' => 'define', 'd_sin6_scope_id' => 'define', 'd_sitearch' => 'define', 'd_snprintf' => 'define', 'd_sockaddr_in6' => 'define', 'd_sockaddr_sa_len' => undef, 'd_sockatmark' => 'define', 'd_sockatmarkproto' => 'define', 'd_socket' => 'define', 'd_socklen_t' => 'define', 'd_sockpair' => 'define', 'd_socks5_init' => undef, 'd_sqrtl' => 'define', 'd_srand48_r' => undef, 'd_srandom_r' => undef, 'd_sresgproto' => undef, 'd_sresuproto' => undef, 'd_stat' => 'define', 'd_statblks' => 'define', 'd_statfs_f_flags' => 'define', 'd_statfs_s' => 'define', 'd_static_inline' => 'define', 'd_statvfs' => 'define', 'd_stdio_cnt_lval' => undef, 'd_stdio_ptr_lval' => undef, 'd_stdio_ptr_lval_nochange_cnt' => undef, 'd_stdio_ptr_lval_sets_cnt' => undef, 'd_stdio_stream_array' => undef, 'd_stdiobase' => undef, 'd_stdstdio' => undef, 'd_strcoll' => 'define', 'd_strerror_l' => 'define', 'd_strerror_r' => undef, 'd_strftime' => 'define', 'd_strlcat' => undef, 'd_strlcpy' => undef, 'd_strnlen' => 'define', 'd_strtod' => 'define', 'd_strtod_l' => 'define', 'd_strtol' => 'define', 'd_strtold' => 'define', 'd_strtold_l' => 'define', 'd_strtoll' => 'define', 'd_strtoq' => 'define', 'd_strtoul' => 'define', 'd_strtoull' => 'define', 'd_strtouq' => 'define', 'd_strxfrm' => 'define', 'd_suidsafe' => undef, 'd_symlink' => 'define', 'd_syscall' => 'define', 'd_syscallproto' => 'define', 'd_sysconf' => 'define', 'd_sysernlst' => '', 'd_syserrlst' => 'define', 'd_system' => 'define', 'd_tcgetpgrp' => 'define', 'd_tcsetpgrp' => 'define', 'd_telldir' => 'define', 'd_telldirproto' => 'define', 'd_tgamma' => 'define', 'd_thread_safe_nl_langinfo_l' => undef, 'd_time' => 'define', 'd_timegm' => 'define', 'd_times' => 'define', 'd_tm_tm_gmtoff' => 'define', 'd_tm_tm_zone' => 'define', 'd_tmpnam_r' => undef, 'd_trunc' => 'define', 'd_truncate' => 'define', 'd_truncl' => 'define', 'd_ttyname_r' => undef, 'd_tzname' => 'define', 'd_u32align' => 'define', 'd_ualarm' => 'define', 'd_umask' => 'define', 'd_uname' => 'define', 'd_union_semun' => undef, 'd_unlinkat' => 'define', 'd_unordered' => undef, 'd_unsetenv' => 'define', 'd_uselocale' => 'define', 'd_usleep' => 'define', 'd_usleepproto' => 'define', 'd_ustat' => 'define', 'd_vendorarch' => undef, 'd_vendorbin' => undef, 'd_vendorlib' => undef, 'd_vendorscript' => undef, 'd_vfork' => undef, 'd_void_closedir' => undef, 'd_voidsig' => 'define', 'd_voidtty' => '', 'd_vsnprintf' => 'define', 'd_wait4' => 'define', 'd_waitpid' => 'define', 'd_wcscmp' => 'define', 'd_wcstombs' => 'define', 'd_wcsxfrm' => 'define', 'd_wctomb' => 'define', 'd_writev' => 'define', 'd_xenix' => undef, 'date' => 'date', 'db_hashtype' => 'u_int32_t', 'db_prefixtype' => 'size_t', 'db_version_major' => '', 'db_version_minor' => '', 'db_version_patch' => '', 'default_inc_excludes_dot' => 'define', 'direntrytype' => 'struct dirent', 'dlext' => 'so', 'dlsrc' => 'dl_dlopen.xs', 'doubleinfbytes' => '0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf +0, 0x7f', 'doublekind' => '3', 'doublemantbits' => '52', 'doublenanbytes' => '0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf +8, 0xff', 'doublesize' => '8', 'drand01' => 'Perl_drand48()', 'drand48_r_proto' => '0', 'dtrace' => '', 'dtraceobject' => '', 'dtracexnolibs' => '', 'dynamic_ext' => 'arybase attributes B Compress/Raw/Bzip2 Co +mpress/Raw/Zlib Cwd Data/Dumper Devel/Peek Devel/PPPort Digest/MD5 Di +gest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call Hash/Ut +il Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util Math/BigIn +t/FastCalc MIME/Base64 mro Opcode PerlIO/encoding PerlIO/mmap PerlIO/ +scalar PerlIO/via POSIX re SDBM_File Socket Storable Sys/Hostname Sys +/Syslog threads threads/shared Tie/Hash/NamedCapture Time/HiRes Time/ +Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap', 'eagain' => 'EAGAIN', 'ebcdic' => undef, 'echo' => 'echo', 'egrep' => 'egrep', 'emacs' => '', 'endgrent_r_proto' => '0', 'endhostent_r_proto' => '0', 'endnetent_r_proto' => '0', 'endprotoent_r_proto' => '0', 'endpwent_r_proto' => '0', 'endservent_r_proto' => '0', 'eunicefix' => ':', 'exe_ext' => '', 'expr' => 'expr', 'extensions' => 'arybase attributes B Compress/Raw/Bzip2 Com +press/Raw/Zlib Cwd Data/Dumper Devel/Peek Devel/PPPort Digest/MD5 Dig +est/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call Hash/Uti +l Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util Math/BigInt +/FastCalc MIME/Base64 mro Opcode PerlIO/encoding PerlIO/mmap PerlIO/s +calar PerlIO/via POSIX re SDBM_File Socket Storable Sys/Hostname Sys/ +Syslog threads threads/shared Tie/Hash/NamedCapture Time/HiRes Time/P +iece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap Archive/ +Tar Attribute/Handlers autodie AutoLoader autouse base B/Debug bignum + Carp Config/Perl/V constant CPAN CPAN/Meta CPAN/Meta/Requirements CP +AN/Meta/YAML Devel/SelfStubber Digest Dumpvalue encoding/warnings Env + Errno experimental Exporter ExtUtils/CBuilder ExtUtils/Constant ExtU +tils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl E +xtUtils/ParseXS FileCache File/Fetch File/Find File/Path File/Temp Fi +lter/Simple Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags if IO/Co +mpress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP lib libnet Loca +le/Codes Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigR +at Math/Complex Memoize Module/CoreList Module/Load Module/Load/Condi +tional Module/Loaded Module/Metadata Net/Ping NEXT Params/Check paren +t perlfaq PerlIO/via/QuotedPrint Perl/OSType Pod/Checker Pod/Escapes +Pod/Functions Pod/Html podlators Pod/Parser Pod/Perldoc Pod/Simple Po +d/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Comp +lete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Bal +anced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/Fil +e Tie/Memoize Tie/RefHash Time/Local version XSLoader', 'extern_C' => 'extern', 'extras' => '', 'fflushNULL' => 'define', 'fflushall' => undef, 'find' => '', 'firstmakefile' => 'makefile', 'flex' => '', 'fpossize' => '16', 'fpostype' => 'fpos_t', 'freetype' => 'void', 'from' => ':', 'full_ar' => '/usr/bin/ar', 'full_csh' => 'csh', 'full_sed' => '/bin/sed', 'gccansipedantic' => '', 'gccosandvers' => '', 'gccversion' => '6.3.0 20170516', 'getgrent_r_proto' => '0', 'getgrgid_r_proto' => '0', 'getgrnam_r_proto' => '0', 'gethostbyaddr_r_proto' => '0', 'gethostbyname_r_proto' => '0', 'gethostent_r_proto' => '0', 'getlogin_r_proto' => '0', 'getnetbyaddr_r_proto' => '0', 'getnetbyname_r_proto' => '0', 'getnetent_r_proto' => '0', 'getprotobyname_r_proto' => '0', 'getprotobynumber_r_proto' => '0', 'getprotoent_r_proto' => '0', 'getpwent_r_proto' => '0', 'getpwnam_r_proto' => '0', 'getpwuid_r_proto' => '0', 'getservbyname_r_proto' => '0', 'getservbyport_r_proto' => '0', 'getservent_r_proto' => '0', 'getspnam_r_proto' => '0', 'gidformat' => '"u"', 'gidsign' => '1', 'gidsize' => '4', 'gidtype' => 'gid_t', 'glibpth' => '/usr/shlib /lib /usr/lib /usr/lib/386 /lib/38 +6 /usr/ccs/lib /usr/ucblib /usr/local/lib ', 'gmake' => 'gmake', 'gmtime_r_proto' => '0', 'gnulibc_version' => '2.24', 'grep' => 'grep', 'groupcat' => 'cat /etc/group', 'groupstype' => 'gid_t', 'gzip' => 'gzip', 'h_fcntl' => 'false', 'h_sysfile' => 'true', 'hint' => 'recommended', 'hostcat' => 'cat /etc/hosts', 'hostgenerate' => '', 'hostosname' => '', 'hostperl' => '', 'html1dir' => ' ', 'html1direxp' => '', 'html3dir' => ' ', 'html3direxp' => '', 'i16size' => '2', 'i16type' => 'short', 'i32size' => '4', 'i32type' => 'int', 'i64size' => '8', 'i64type' => 'long', 'i8size' => '1', 'i8type' => 'signed char', 'i_arpainet' => 'define', 'i_bfd' => undef, 'i_bsdioctl' => '', 'i_crypt' => 'define', 'i_db' => undef, 'i_dbm' => undef, 'i_dirent' => 'define', 'i_dlfcn' => 'define', 'i_execinfo' => 'define', 'i_fcntl' => undef, 'i_fenv' => 'define', 'i_fp' => undef, 'i_fp_class' => undef, 'i_gdbm' => undef, 'i_gdbm_ndbm' => undef, 'i_gdbmndbm' => undef, 'i_grp' => 'define', 'i_ieeefp' => undef, 'i_inttypes' => 'define', 'i_langinfo' => 'define', 'i_libutil' => undef, 'i_limits' => 'define', 'i_locale' => 'define', 'i_machcthr' => undef, 'i_malloc' => 'define', 'i_mallocmalloc' => undef, 'i_mntent' => 'define', 'i_ndbm' => undef, 'i_netdb' => 'define', 'i_neterrno' => undef, 'i_netinettcp' => 'define', 'i_niin' => 'define', 'i_poll' => 'define', 'i_prot' => undef, 'i_pthread' => 'define', 'i_pwd' => 'define', 'i_quadmath' => 'define', 'i_rpcsvcdbm' => undef, 'i_sgtty' => undef, 'i_shadow' => 'define', 'i_socks' => undef, 'i_stdbool' => 'define', 'i_stdint' => 'define', 'i_stdlib' => 'define', 'i_string' => 'define', 'i_sunmath' => undef, 'i_sysaccess' => undef, 'i_sysdir' => 'define', 'i_sysfile' => 'define', 'i_sysfilio' => undef, 'i_sysin' => undef, 'i_sysioctl' => 'define', 'i_syslog' => 'define', 'i_sysmman' => 'define', 'i_sysmode' => undef, 'i_sysmount' => 'define', 'i_sysndir' => undef, 'i_sysparam' => 'define', 'i_syspoll' => 'define', 'i_sysresrc' => 'define', 'i_syssecrt' => undef, 'i_sysselct' => 'define', 'i_syssockio' => undef, 'i_sysstat' => 'define', 'i_sysstatfs' => 'define', 'i_sysstatvfs' => 'define', 'i_systime' => 'define', 'i_systimek' => undef, 'i_systimes' => 'define', 'i_systypes' => 'define', 'i_sysuio' => 'define', 'i_sysun' => 'define', 'i_sysutsname' => 'define', 'i_sysvfs' => 'define', 'i_syswait' => 'define', 'i_termio' => undef, 'i_termios' => 'define', 'i_time' => 'define', 'i_unistd' => 'define', 'i_ustat' => 'define', 'i_utime' => 'define', 'i_vfork' => undef, 'i_wchar' => 'define', 'i_xlocale' => 'define', 'ignore_versioned_solibs' => 'y', 'inc_version_list' => '', 'inc_version_list_init' => '0', 'incpath' => '', 'incpth' => '/usr/lib/gcc/x86_64-linux-gnu/6/include /usr/lo +cal/include /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed /usr/includ +e/x86_64-linux-gnu /usr/include', 'inews' => '', 'initialinstalllocation' => '/usr/local/bin', 'installarchlib' => '/usr/local/lib/perl5/5.29.2/x86_64-linu +x', 'installbin' => '/usr/local/bin', 'installhtml1dir' => '', 'installhtml3dir' => '', 'installman1dir' => '', 'installman3dir' => '', 'installprefix' => '/usr/local', 'installprefixexp' => '/usr/local', 'installprivlib' => '/usr/local/lib/perl5/5.29.2', 'installscript' => '/usr/local/bin', 'installsitearch' => '/usr/local/lib/perl5/site_perl/5.29.2/ +x86_64-linux', 'installsitebin' => '/usr/local/bin', 'installsitehtml1dir' => '', 'installsitehtml3dir' => '', 'installsitelib' => '/usr/local/lib/perl5/site_perl/5.29.2', 'installsiteman1dir' => '', 'installsiteman3dir' => '', 'installsitescript' => '/usr/local/bin', 'installstyle' => 'lib/perl5', 'installusrbinperl' => undef, 'installvendorarch' => '', 'installvendorbin' => '', 'installvendorhtml1dir' => '', 'installvendorhtml3dir' => '', 'installvendorlib' => '', 'installvendorman1dir' => '', 'installvendorman3dir' => '', 'installvendorscript' => '', 'intsize' => '4', 'issymlink' => 'test -h', 'ivdformat' => '"ld"', 'ivsize' => '8', 'ivtype' => 'long', 'known_extensions' => 'Amiga/ARexx Amiga/Exec Archive/Tar ar +ybase Attribute/Handlers attributes autodie AutoLoader autouse B base + B/Debug bignum Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl +/V constant CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Cwd +Data/Dumper DB_File Devel/Peek Devel/PPPort Devel/SelfStubber Digest +Digest/MD5 Digest/SHA Dumpvalue Encode encoding/warnings Env Errno ex +perimental Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Inst +all ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/P +arseXS Fcntl FileCache File/DosGlob File/Fetch File/Find File/Glob Fi +le/Path File/Temp Filter/Simple Filter/Util/Call GDBM_File Getopt/Lon +g Hash/Util Hash/Util/FieldHash HTTP/Tiny I18N/Collate I18N/Langinfo +I18N/LangTags if IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open +3 IPC/SysV JSON/PP lib libnet List/Util Locale/Codes Locale/Maketext +Locale/Maketext/Simple Math/BigInt Math/BigInt/FastCalc Math/BigRat M +ath/Complex Memoize MIME/Base64 Module/CoreList Module/Load Module/Lo +ad/Conditional Module/Loaded Module/Metadata mro NDBM_File Net/Ping N +EXT ODBM_File Opcode Params/Check parent perlfaq PerlIO/encoding Perl +IO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Perl/OSType P +od/Checker Pod/Escapes Pod/Functions Pod/Html podlators Pod/Parser Po +d/Perldoc Pod/Simple Pod/Usage POSIX re Safe SDBM_File Search/Dict Se +lfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/ +Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Ab +brev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue threads Thr +ead/Semaphore threads/shared Tie/File Tie/Hash/NamedCapture Tie/Memoi +ze Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unico +de/Normalize version VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API +/File Win32CORE XS/APItest XSLoader XS/Typemap ', 'ksh' => '', 'ld' => 'cc', 'ld_can_script' => 'define', 'lddlflags' => '-shared -O2 -L/usr/local/lib -fstack-protect +or-strong', 'ldflags' => ' -fstack-protector-strong -L/usr/local/lib', 'ldflags_uselargefiles' => '', 'ldlibpthname' => 'LD_LIBRARY_PATH', 'less' => 'less', 'lib_ext' => '.a', 'libc' => 'libc-2.24.so', 'libdb_needs_pthread' => 'N', 'libperl' => 'libperl.a', 'libpth' => '/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/6/ +include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linu +x-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib', 'libs' => '-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc', 'libsdirs' => ' /usr/lib/x86_64-linux-gnu', 'libsfiles' => ' libpthread.so libnsl.so libdl.so libm.so li +bcrypt.so libutil.so libc.so', 'libsfound' => ' /usr/lib/x86_64-linux-gnu/libpthread.so /us +r/lib/x86_64-linux-gnu/libnsl.so /usr/lib/x86_64-linux-gnu/libdl.so / +usr/lib/x86_64-linux-gnu/libm.so /usr/lib/x86_64-linux-gnu/libcrypt.s +o /usr/lib/x86_64-linux-gnu/libutil.so /usr/lib/x86_64-linux-gnu/libc +.so', 'libspath' => ' /usr/local/lib /usr/lib/gcc/x86_64-linux-gnu +/6/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-l +inux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib', 'libswanted' => 'cl pthread socket inet nsl gdbm dbm db mall +oc dl ld sun m crypt sec util c cposix posix ucb BSD gdbm_compat', 'libswanted_uselargefiles' => '', 'line' => '', 'lint' => '', 'lkflags' => '', 'ln' => 'ln', 'lns' => '/bin/ln -s', 'localtime_r_proto' => '0', 'locincpth' => '/usr/local/include /opt/local/include /usr/g +nu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include', 'loclibpth' => '/usr/local/lib /opt/local/lib /usr/gnu/lib / +opt/gnu/lib /usr/GNU/lib /opt/GNU/lib', 'longdblinfbytes' => '0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x +00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00', 'longdblkind' => '3', 'longdblmantbits' => '64', 'longdblnanbytes' => '0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x +00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00', 'longdblsize' => '16', 'longlongsize' => '8', 'longsize' => '8', 'lp' => '', 'lpr' => '', 'ls' => 'ls', 'lseeksize' => '8', 'lseektype' => 'off_t', 'mail' => '', 'mailx' => '', 'make' => 'make', 'make_set_make' => '#', 'mallocobj' => '', 'mallocsrc' => '', 'malloctype' => 'void *', 'man1dir' => ' ', 'man1direxp' => '', 'man1ext' => '0', 'man3dir' => ' ', 'man3direxp' => '', 'man3ext' => '0', 'mips_type' => '', 'mistrustnm' => '', 'mkdir' => 'mkdir', 'mmaptype' => 'void *', 'modetype' => 'mode_t', 'more' => 'more', 'multiarch' => undef, 'mv' => '', 'myarchname' => 'x86_64-linux', 'mydomain' => '.(none)', 'myhostname' => 'scratch', 'myuname' => 'linux scratch 4.9.0-7-amd64 #1 smp debian 4.9. +110-1 (2018-07-05) x86_64 gnulinux ', 'n' => '-n', 'need_va_copy' => 'define', 'netdb_hlen_type' => 'size_t', 'netdb_host_type' => 'char *', 'netdb_name_type' => 'const char *', 'netdb_net_type' => 'in_addr_t', 'nm' => 'nm', 'nm_opt' => '', 'nm_so_opt' => '--dynamic', 'nonxs_ext' => 'Archive/Tar Attribute/Handlers autodie AutoL +oader autouse base B/Debug bignum Carp Config/Perl/V constant CPAN CP +AN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Devel/SelfStubber Diges +t Dumpvalue encoding/warnings Env Errno experimental Exporter ExtUtil +s/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtU +tils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS FileCache File/Fetch + File/Find File/Path File/Temp Filter/Simple Getopt/Long HTTP/Tiny I1 +8N/Collate I18N/LangTags if IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd +IPC/Open3 JSON/PP lib libnet Locale/Codes Locale/Maketext Locale/Make +text/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreL +ist Module/Load Module/Load/Conditional Module/Loaded Module/Metadata + Net/Ping NEXT Params/Check parent perlfaq PerlIO/via/QuotedPrint Per +l/OSType Pod/Checker Pod/Escapes Pod/Functions Pod/Html podlators Pod +/Parser Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader +Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness + Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thre +ad/Queue Thread/Semaphore Tie/File Tie/Memoize Tie/RefHash Time/Local + version XSLoader', 'nroff' => 'nroff', 'nvEUformat' => '"E"', 'nvFUformat' => '"F"', 'nvGUformat' => '"G"', 'nv_overflows_integers_at' => '256.0*256.0*256.0*256.0*256.0 +*256.0*2.0*2.0*2.0*2.0*2.0', 'nv_preserves_uv_bits' => '53', 'nveformat' => '"e"', 'nvfformat' => '"f"', 'nvgformat' => '"g"', 'nvmantbits' => '52', 'nvsize' => '8', 'nvtype' => 'double', 'o_nonblock' => 'O_NONBLOCK', 'obj_ext' => '.o', 'old_pthread_create_joinable' => '', 'optimize' => '-O2', 'orderlib' => 'false', 'osname' => 'linux', 'osvers' => '4.9.0-7-amd64', 'otherlibdirs' => ' ', 'package' => 'perl5', 'pager' => '/bin/more', 'passcat' => 'cat /etc/passwd', 'patchlevel' => '29', 'path_sep' => ':', 'perl' => 'perl', 'perl5' => '/usr/bin/perl', 'perl_patchlevel' => '', 'perl_static_inline' => 'static __inline__', 'perladmin' => 'aitap@scratch.(none)', 'perllibs' => '-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc', 'perlpath' => '/usr/local/bin/perl5.29.2', 'pg' => 'pg', 'phostname' => 'hostname', 'pidtype' => 'pid_t', 'plibpth' => '/lib/x86_64-linux-gnu/6 /lib/x86_64-linux-gnu +/lib/../lib /usr/lib/x86_64-linux-gnu/6 /usr/lib/x86_64-linux-gnu /us +r/lib/../lib /lib /usr/lib', 'pmake' => '', 'pr' => '', 'prefix' => '/usr/local', 'prefixexp' => '/usr/local', 'privlib' => '/usr/local/lib/perl5/5.29.2', 'privlibexp' => '/usr/local/lib/perl5/5.29.2', 'procselfexe' => '"/proc/self/exe"', 'prototype' => 'define', 'ptrsize' => '8', 'quadkind' => '2', 'quadtype' => 'long', 'randbits' => '48', 'randfunc' => 'Perl_drand48', 'random_r_proto' => '0', 'randseedtype' => 'U32', 'ranlib' => ':', 'rd_nodata' => '-1', 'readdir64_r_proto' => '0', 'readdir_r_proto' => '0', 'revision' => '5', 'rm' => 'rm', 'rm_try' => '/bin/rm -f try try a.out .out try.[cho] try..o +core core.try* try.core*', 'rmail' => '', 'run' => '', 'runnm' => 'false', 'sGMTIME_max' => '67768036191676799', 'sGMTIME_min' => '-62167219200', 'sLOCALTIME_max' => '67768036191676799', 'sLOCALTIME_min' => '-62167219200', 'sPRIEUldbl' => '"LE"', 'sPRIFUldbl' => '"LF"', 'sPRIGUldbl' => '"LG"', 'sPRIXU64' => '"lX"', 'sPRId64' => '"ld"', 'sPRIeldbl' => '"Le"', 'sPRIfldbl' => '"Lf"', 'sPRIgldbl' => '"Lg"', 'sPRIi64' => '"li"', 'sPRIo64' => '"lo"', 'sPRIu64' => '"lu"', 'sPRIx64' => '"lx"', 'sSCNfldbl' => '"Lf"', 'sched_yield' => 'sched_yield()', 'scriptdir' => '/usr/local/bin', 'scriptdirexp' => '/usr/local/bin', 'sed' => 'sed', 'seedfunc' => 'Perl_drand48_init', 'selectminbits' => '64', 'selecttype' => 'fd_set *', 'sendmail' => '', 'setgrent_r_proto' => '0', 'sethostent_r_proto' => '0', 'setlocale_r_proto' => '0', 'setnetent_r_proto' => '0', 'setprotoent_r_proto' => '0', 'setpwent_r_proto' => '0', 'setservent_r_proto' => '0', 'sh' => '/bin/sh', 'shar' => '', 'sharpbang' => '#!', 'shmattype' => 'void *', 'shortsize' => '2', 'shrpenv' => '', 'shsharp' => 'true', 'sig_count' => '65', 'sig_name' => 'ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL +USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU UR +G XCPU XFSZ VTALRM PROF WINCH IO PWR SYS NUM32 NUM33 RTMIN NUM35 NUM3 +6 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 N +UM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM5 +9 NUM60 NUM61 NUM62 NUM63 RTMAX IOT CLD POLL UNUSED ', 'sig_name_init' => '"ZERO", "HUP", "INT", "QUIT", "ILL", "TR +AP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "A +LRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU +", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "SY +S", "NUM32", "NUM33", "RTMIN", "NUM35", "NUM36", "NUM37", "NUM38", "N +UM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", + "NUM47", "NUM48", "NUM49", "NUM50", "NUM51", "NUM52", "NUM53", "NUM5 +4", "NUM55", "NUM56", "NUM57", "NUM58", "NUM59", "NUM60", "NUM61", "N +UM62", "NUM63", "RTMAX", "IOT", "CLD", "POLL", "UNUSED", 0', 'sig_num' => '0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 + 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 + 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 + 6 17 29 31 ', 'sig_num_init' => '0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, +30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 4 +7, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64 +, 6, 17, 29, 31, 0', 'sig_size' => '69', 'signal_t' => 'void', 'sitearch' => '/usr/local/lib/perl5/site_perl/5.29.2/x86_64- +linux', 'sitearchexp' => '/usr/local/lib/perl5/site_perl/5.29.2/x86_ +64-linux', 'sitebin' => '/usr/local/bin', 'sitebinexp' => '/usr/local/bin', 'sitehtml1dir' => '', 'sitehtml1direxp' => '', 'sitehtml3dir' => '', 'sitehtml3direxp' => '', 'sitelib' => '/usr/local/lib/perl5/site_perl/5.29.2', 'sitelib_stem' => '/usr/local/lib/perl5/site_perl', 'sitelibexp' => '/usr/local/lib/perl5/site_perl/5.29.2', 'siteman1dir' => '', 'siteman1direxp' => '', 'siteman3dir' => '', 'siteman3direxp' => '', 'siteprefix' => '/usr/local', 'siteprefixexp' => '/usr/local', 'sitescript' => '/usr/local/bin', 'sitescriptexp' => '/usr/local/bin', 'sizesize' => '8', 'sizetype' => 'size_t', 'sleep' => '', 'smail' => '', 'so' => 'so', 'sockethdr' => '', 'socketlib' => '', 'socksizetype' => 'socklen_t', 'sort' => 'sort', 'spackage' => 'Perl5', 'spitshell' => 'cat', 'srand48_r_proto' => '0', 'srandom_r_proto' => '0', 'src' => '.', 'ssizetype' => 'ssize_t', 'st_ino_sign' => '1', 'st_ino_size' => '8', 'startperl' => '#!/usr/local/bin/perl5.29.2', 'startsh' => '#!/bin/sh', 'static_ext' => ' ', 'stdchar' => 'char', 'stdio_base' => '((fp)->_IO_read_base)', 'stdio_bufsiz' => '((fp)->_IO_read_end - (fp)->_IO_read_base +)', 'stdio_cnt' => '((fp)->_IO_read_end - (fp)->_IO_read_ptr)', 'stdio_filbuf' => '', 'stdio_ptr' => '((fp)->_IO_read_ptr)', 'stdio_stream_array' => '', 'strerror_r_proto' => '0', 'submit' => '', 'subversion' => '2', 'sysman' => '/usr/share/man/man1', 'sysroot' => '', 'tail' => '', 'tar' => '', 'targetarch' => '', 'targetdir' => '', 'targetenv' => '', 'targethost' => '', 'targetmkdir' => '', 'targetport' => '', 'targetsh' => '/bin/sh', 'tbl' => '', 'tee' => '', 'test' => 'test', 'timeincl' => '/usr/include/x86_64-linux-gnu/sys/time.h ', 'timetype' => 'time_t', 'tmpnam_r_proto' => '0', 'to' => ':', 'touch' => 'touch', 'tr' => 'tr', 'trnl' => '\\n', 'troff' => '', 'ttyname_r_proto' => '0', 'u16size' => '2', 'u16type' => 'unsigned short', 'u32size' => '4', 'u32type' => 'unsigned int', 'u64size' => '8', 'u64type' => 'unsigned long', 'u8size' => '1', 'u8type' => 'unsigned char', 'uidformat' => '"u"', 'uidsign' => '1', 'uidsize' => '4', 'uidtype' => 'uid_t', 'uname' => 'uname', 'uniq' => 'uniq', 'uquadtype' => 'unsigned long', 'use5005threads' => undef, 'use64bitall' => 'define', 'use64bitint' => 'define', 'usecbacktrace' => undef, 'usecrosscompile' => undef, 'usedevel' => 'define', 'usedl' => 'define', 'usedtrace' => undef, 'usefaststdio' => undef, 'useithreads' => undef, 'usekernprocpathname' => undef, 'uselanginfo' => 'true', 'uselargefiles' => 'define', 'uselongdouble' => undef, 'usemallocwrap' => 'define', 'usemorebits' => undef, 'usemultiplicity' => undef, 'usemymalloc' => 'n', 'usenm' => 'false', 'usensgetexecutablepath' => undef, 'useopcode' => 'true', 'useperlio' => 'define', 'useposix' => 'true', 'usequadmath' => undef, 'usereentrant' => undef, 'userelocatableinc' => undef, 'useshrplib' => 'false', 'usesitecustomize' => undef, 'usesocks' => undef, 'usethreads' => undef, 'usevendorprefix' => undef, 'useversionedarchname' => undef, 'usevfork' => 'false', 'usrinc' => '/usr/include', 'uuname' => '', 'uvXUformat' => '"lX"', 'uvoformat' => '"lo"', 'uvsize' => '8', 'uvtype' => 'unsigned long', 'uvuformat' => '"lu"', 'uvxformat' => '"lx"', 'vendorarch' => '', 'vendorarchexp' => '', 'vendorbin' => '', 'vendorbinexp' => '', 'vendorhtml1dir' => ' ', 'vendorhtml1direxp' => '', 'vendorhtml3dir' => ' ', 'vendorhtml3direxp' => '', 'vendorlib' => '', 'vendorlib_stem' => '', 'vendorlibexp' => '', 'vendorman1dir' => ' ', 'vendorman1direxp' => '', 'vendorman3dir' => ' ', 'vendorman3direxp' => '', 'vendorprefix' => '', 'vendorprefixexp' => '', 'vendorscript' => '', 'vendorscriptexp' => '', 'version' => '5.29.2', 'version_patchlevel_string' => 'version 29 subversion 2', 'versiononly' => 'define', 'vi' => '', 'xlibpth' => '/usr/lib/386 /lib/386', 'yacc' => 'yacc', 'yaccflags' => '', 'zcat' => '', 'zip' => 'zip', 'ccflags_nolargefiles' => '-fwrapv -fno-strict-aliasing -pip +e -fstack-protector-strong -I/usr/local/include -D_FORTIFY_SOURCE=2' +, 'ldflags_nolargefiles' => ' -fstack-protector-strong -L/usr/ +local/lib', 'libs_nolargefiles' => '-lpthread -lnsl -ldl -lm -lcrypt -lu +til -lc', 'libswanted_nolargefiles' => 'cl pthread socket inet nsl gdb +m dbm db malloc dl ld sun m crypt sec util c cposix posix ucb BSD gdb +m_compat', 'ccwarnflags' => ' -Wall -Werror=declaration-after-statement + -Werror=pointer-arith -Wextra -Wc++-compat -Wwrite-strings', 'ccstdflags' => ' -std=c89', 'git_commit_id' => '', 'git_describe' => '', 'git_branch' => '', 'git_uncommitted_changes' => '', 'git_commit_id_title' => '' };
Is there anything else I could send you?

1Yes, it has bitten me in the past when I wrote a library to talk to a device using standard C string formatting functions, then something else in the process called setlocale(LC_ALL, "") and everything got broken.

Replies are listed 'Best First'.
Re^5: Avoiding perl's Atof when assigning floating point values
by syphilis (Archbishop) on Jul 29, 2018 at 00:59 UTC
    UPDATE: Since writing this post, I've managed to reproduce the lib/locale.t failure on my Ubuntu-16.04 box by switching locale to LANG=de_DE.UTF-8.
    I now just need to make sense of what I'm seeing.

    The failures might be related to the fact the my locale (like some European ones) uses a comma (,) as decimal separator, unlike a dot (.) as expected by "C" locale

    Then I wonder if I might be able to strike the same issues on my Ubuntu-16.04 box by messing with its locale settings. I'll have to at least give that a try.
    I've no experience with messing with locale settings - but I expect that google has lots of advice to offer on how to do this.

    I'm sure that my patches affect only the values that are assigned - they change nothing about the way that values are displayed.
    If C's strtod() doesn't honor the locale when parsing the input string, then that would cause breakage. However, in such a case I would expect more extensive breakage than just a lib/locale.t failure.
    And, of course, such a perl would have no business in defining Perl_strtod in the first place - and the default that allows the defining of $Config{d_strtod} ought to be changed.

    Could you test one more thing for me, please ?
    When (if) you have the time, could you rebuild that source with the addition of -Ud_strtod to the configure args. That is:
    make distclean sh Configure -des -Dusedevel -Duse64bitall -Ud_strtod && make && make +test
    I'm hopeful that will allow the lib/locale.t tests to pass without introducing more breakage elsewhere.
    Thank you very much for the trouble you've taken and the information you've provided.

    Cheers,
    Rob
      I've been a little despondent about the lib/locale.t failures ever since I became aware of them a few days ago.
      But, tonight, I think I've found the correct way to deal with them.
      Under make test there seems to be only the one failing test in lib/locale.t, but there's an additional 4 tests that fail if one runs ./perl -I./lib -T locale.t
      There's no problem with those 5 tests on quadmath builds, irrespective of locale ... why is that ? ... it's because they're skipped on quadmath builds.

      It then dawned upon me that if it's ok for quadmath builds to skip those tests, then it's ok for my patched approach to also skip them. (Like the quadmath builds, my approach also assigns NVs using the underlying C compiler via Perl_strtod.)
      Having just modified lib/locale.t to skip those tests whenever Perl_strtod is defined, I find that all tests now pass !!

      I just need to provide patches against current blead, and hope that I can get Karl and/or Jim to create another smoke-me branch for more testing.
      If I can just get those patches into blead .....

      Cheers,
      Rob
        It then dawned upon me that if it's ok for quadmath builds to skip those tests, then it's ok for my patched approach to also skip them

        However, quadmath's inability to pass those tests didn't change any pre-existing behaviour, whereas my patches have changed behaviour - and that might not be greeted so warmly.
        I probably ought at least find out exactly what that change of behaviour is - though it's as clear as mud to me at the moment.
        It would be great if anyone has some clear code that demonstrates what has actually changed.
        In the meantime, it's back to perusing the perllocale docs and lib/locale.t. (Is there some other documentation that might be helpful to me ?)

        Cheers,
        Rob

      I've managed to reproduce the lib/locale.t failure on my Ubuntu-16.04 box by switching locale to LANG=de_DE.UTF-8.
      I wonder if it's possible to force a particular LC_NUMERIC which has decimal_point   "<U002C>" in /usr/share/i18n/locales/$locale for the lib/locale.t test set, while keeping it C for other categories as a way of verifying the cause of the failures.

      make distclean sh Configure -des -Dusedevel -Duse64bitall -Ud_strtod && make && make +test
      lib/locale.t passes, but other tests don't:
      Failed 2 tests out of 2458, 99.92% okay. ../ext/POSIX/t/posix.t run/locale.t
      But that's not too mysterious: In particular, with those patches: all tests pass.

        Failed 2 tests out of 2458, 99.92% okay. ../ext/POSIX/t/posix.t run/locale.t

        Yes, the first thing I tried when I discovered I could reproduce the failures was to test a build configured with -Ud_strtod.
        I got the same results as you.

        I apologise for not having tried a bit harder to reproduce the lib/locale.t failure.
        I assumed that Carlos' smoker would be using the same locale setting for all of the systems that it tested. That is, I assumed that the reason that some systems passed and others didn't was because of some difference in the systems.
        But, of course, it was the difference in the locale settings. It was a bad assumption on my part. (They always are.)

        As I mentioned in my last post, I'm confident that the correct fix is to modify lib/locale.t and that's the solution I'll be pushing when I get things organized.
        Here's the patch:
        --- git/bleadperl/lib/locale.t 2018-07-15 10:33:46 +1000 +++ locale.t 2018-07-29 22:21:25 +1000 @@ -2167,8 +2167,8 @@ my $first_c_test = $locales_test_number; $test_names{++$locales_test_number} = 'Verify that a different lo +cale radix works when doing "==" with a constant'; - if ($Config{usequadmath}) { - print "# Skip: no locale radix with usequadmath ($test_names{ +$locales_test_number})\n"; + if ($Config{usequadmath} || ($Config{uselongdouble} && $Config{d_ +strtold}) || (!$Config{uselongdouble} && $Config{d_strtod})) { + print "# Skip: no locale radix with Perl_strtod ($test_names{ +$locales_test_number})\n"; report_result($Locale, $locales_test_number, 1); } else { report_result($Locale, $locales_test_number, $ok3); @@ -2176,8 +2176,8 @@ } $test_names{++$locales_test_number} = 'Verify that a different lo +cale radix works when doing "==" with a scalar'; - if ($Config{usequadmath}) { - print "# Skip: no locale radix with usequadmath ($test_names{ +$locales_test_number})\n"; + if ($Config{usequadmath} || ($Config{uselongdouble} && $Config{d_ +strtold}) || (!$Config{uselongdouble} && $Config{d_strtod})) { + print "# Skip: no locale radix with Perl_strtod ($test_names{ +$locales_test_number})\n"; report_result($Locale, $locales_test_number, 1); } else { report_result($Locale, $locales_test_number, $ok4); @@ -2198,8 +2198,8 @@ $test_names{$locales_test_number} = 'Verify that "==" with a scal +ar still works in inner no locale'; $test_names{++$locales_test_number} = 'Verify that "==" with a sc +alar and an intervening sprintf still works in inner no locale'; - if ($Config{usequadmath}) { - print "# Skip: no locale radix with usequadmath ($test_names{ +$locales_test_number})\n"; + if ($Config{usequadmath} || ($Config{uselongdouble} && $Config{d_ +strtold}) || (!$Config{uselongdouble} && $Config{d_strtod})) { + print "# Skip: no locale radix with Perl_strtod ($test_names{ +$locales_test_number})\n"; report_result($Locale, $locales_test_number, 1); } else { report_result($Locale, $locales_test_number, $ok8); @@ -2218,8 +2218,8 @@ $problematical_tests{$locales_test_number} = 1; $test_names{++$locales_test_number} = 'Verify that after a no-loc +ale block, a different locale radix still works when doing "==" with +a scalar and an intervening sprintf'; - if ($Config{usequadmath}) { - print "# Skip: no locale radix with usequadmath ($test_names{ +$locales_test_number})\n"; + if ($Config{usequadmath} || ($Config{uselongdouble} && $Config{d_ +strtold}) || (!$Config{uselongdouble} && $Config{d_strtod})) { + print "# Skip: no locale radix with Perl_strtod ($test_names{ +$locales_test_number})\n"; report_result($Locale, $locales_test_number, 1); } else { report_result($Locale, $locales_test_number, $ok11); @@ -2465,8 +2465,8 @@ } } - if ($Config{usequadmath}) { - print "# Skip: no locale radix with usequadmath ($Locale) +\n"; + if ($Config{usequadmath} || ($Config{uselongdouble} && $Confi +g{d_strtold}) || (!$Config{uselongdouble} && $Config{d_strtod})) { + print "# Skip: no locale radix with Perl_strtod ($Locale) +\n"; report_result($Locale, $locales_test_number, 1); } else { report_result($Locale, $locales_test_number, @f == 0);
        (Safest to avoid line wrapping by electing to "download")

        If you apply that patch to the lib/locale.t that shipped with blead_patched.tar.gz then all tests should (hopefully) pass.

        Thanks again for the help you've provided. I much appreciate it.

        Cheers,
        Rob
        UPDATE: Patches for t/run/locale.t and ext/POSIX/t/posix.t have been submitted to perlbug - see https://rt.perl.org/Ticket/Display.html?id=133417
        UPDATE 2: Those patches to t/run/locale.t and ext/POSIX/t/posix.t have now been applied to bleadperl.

        Oh ... I failed to specifically thank you for providing those 2 patches.
        I'll certainly be including them as I think that -Ud_strtod builds should be supported.
        With current perl source there's no point in building with -Ud_strtod (or -Ud_strtold) but with the patches I'm proposing, those switches provide the simplest way to resort to using perl's Atof for assigning floating point values.
        I don't expect that anyone in their right mind would want to opt for using perl's Atof, but I think the option should remain and the test suite should pass all tests.

        Cheers,
        Rob