Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.94k stars 554 forks source link

String/Number interpretation of a string #16439

Open p5pRT opened 6 years ago

p5pRT commented 6 years ago

Migrated from rt.perl.org#132908 (status was 'open')

Searchable as RT132908$

p5pRT commented 6 years ago

From perl@ton.iguana.be

Created by perl@ton.iguana.be

perl -wlE '$_="-4-5"; say -$_|0' Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_=-4 . -5; say -$_|0' Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_="-4-5"; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4-5" isn't numeric in addition (+) at -e line 1. Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

erl -wlE '$_=-4 . -5; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4-5" isn't numeric in addition (+) at -e line 1. 18446744073709551612

That last one is very unexpected. The same thing happens on perl 5.26.1

Perl Info ``` Flags: category=core severity=medium Site configuration information for perl 5.20.2: Configured by Debian Project at Mon Sep 18 18:13:32 UTC 2017. Summary of my perl5 (revision 5 version 20 subversion 2) configuration: Platform: osname=linux, osvers=4.9.0-3-amd64, archname=x86_64-linux-gnu-thread-multi uname='linux binet 4.9.0-3-amd64 #1 smp debian 4.9.30-2+deb9u3 (2017-08-06) x86_64 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.20 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.20 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.20 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.20.2 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.20.2 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dusesitecustomize -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.20.2 -des' hint=recommended, useposix=true, d_sigaction=define useithreads=define, usemultiplicity=define use64bitint=define, use64bitall=define, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2 -g', cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' ccversion='', gccversion='4.9.2', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='cc', ldflags =' -fstack-protector -L/usr/local/lib' libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt perllibs=-ldl -lm -lpthread -lc -lcrypt libc=libc-2.19.so, so=so, useshrplib=true, libperl=libperl.so.5.20 gnulibc_version='2.19' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib -fstack-protector' Locally applied patches: DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN. DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly restrictive DB_File version check. DEBPKG:debian/doc_info - Replace generic man(1) instructions with Debian-specific information. DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @INC directories. DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes. DEBPKG:debian/libperl_embed_doc - http://bugs.debian.org/186778 Note that libperl-dev package is required for embedded linking DEBPKG:fixes/respect_umask - Respect umask during installation DEBPKG:debian/writable_site_dirs - Set umask approproately for site install directories DEBPKG:debian/extutils_set_libperl_path - EU:MM: set location of libperl.a under /usr/lib DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or perllocal.pod for perl or vendor DEBPKG:debian/prefix_changes - Fiddle with *PREFIX and variables written to the makefile DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets. DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor. DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy. DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable. DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian DEBPKG:debian/module_build_man_extensions - http://bugs.debian.org/479460 Adjust Module::Build manual page extensions for the Debian Perl policy DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need. DEBPKG:fixes/net_smtp_docs - [rt.cpan.org #36038] http://bugs.debian.org/100195 Document the Net::SMTP 'Port' option DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/747628 Point users to Debian packages of deprecated core modules DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts DEBPKG:debian/skip-upstream-git-tests - Skip tests specific to the upstream Git repository DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.20.2-3+deb8u9 in patchlevel.h DEBPKG:debian/skip-kfreebsd-crash - http://bugs.debian.org/628493 [perl #96272] Skip a crashing test case in t/op/threads.t on GNU/kFreeBSD DEBPKG:fixes/document_makemaker_ccflags - http://bugs.debian.org/628522 [rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags} DEBPKG:debian/find_html2text - http://bugs.debian.org/640479 Configure CPAN::Distribution with correct name of html2text DEBPKG:debian/perl5db-x-terminal-emulator.patch - http://bugs.debian.org/668490 Invoke x-terminal-emulator rather than xterm in perl5db.pl DEBPKG:debian/cpan-missing-site-dirs - http://bugs.debian.org/688842 Fix CPAN::FirstTime defaults with nonexisting site dirs if a parent is writable DEBPKG:fixes/memoize_storable_nstore - [rt.cpan.org #77790] http://bugs.debian.org/587650 Memoize::Storable: respect 'nstore' option not respected DEBPKG:debian/regen-skip - Skip a regeneration check in unrelated git repositories DEBPKG:fixes/regcomp-mips-optim - [perl #122817] http://bugs.debian.org/754054 Downgrade the optimization of regcomp.c on mips and mipsel due to a gcc-4.9 bug DEBPKG:debian/makemaker-pasthru - http://bugs.debian.org/758471 Pass LD settings through to subdirectories DEBPKG:fixes/perldoc-less-R - [rt.cpan.org #98636] http://bugs.debian.org/758689 Tell the 'less' pager to allow terminal escape sequences DEBPKG:fixes/pod_man_reproducible_date - http://bugs.debian.org/759405 Support POD_MAN_DATE in Pod::Man for the left-hand footer DEBPKG:fixes/io_uncompress_gunzip_inmemory - http://bugs.debian.org/747363 [rt.cpan.org #95494] Fix gunzip to in-memory file handle DEBPKG:fixes/socket_test_recv_fix - http://bugs.debian.org/758718 [perl #122657] Compare recv return value to peername in socket test DEBPKG:fixes/hurd_socket_recv_todo - http://bugs.debian.org/758718 [perl #122657] TODO checking the result of recv() on hurd DEBPKG:fixes/regexp-performance - [0fa70a0] http://bugs.debian.org/777556 [perl #123743] simpify and speed up /.*.../ handling DEBPKG:fixes/failed_require_diagnostics - http://bugs.debian.org/781120 [perl #123270] Report inaccesible file on failed require DEBPKG:fixes/array-cloning - http://bugs.debian.org/779357 [perl #124127] [902d169] fix cloning arrays with unused elements DEBPKG:fixes/perldb-threads - http://bugs.debian.org/779357 [perl #124127] [41ef2c6] lib/perl5db.pl: Restore noop lock prototype DEBPKG:fixes/CVE-2015-8607_file_spec_taint_fix - ensure File::Spec::canonpath() preserves taint DEBPKG:fixes/encode-unicode-bom - http://bugs.debian.org/798727 [rt.cpan.org #107043] Address https://rt.cpan.org/Public/Bug/Display.html?id=107043 DEBPKG:debian/encode-unicode-bom-doc - http://bugs.debian.org/798727 Document Debian backport of Encode::Unicode fix DEBPKG:debian/kfreebsd-softupdates - http://bugs.debian.org/796798 Work around Debian Bug#796798 DEBPKG:fixes/CVE-2016-2381_duplicate_env - remove duplicate environment variables from environ DEBPKG:debian/debugperl-compat-fix - [perl #127212] http://bugs.debian.org/810326 Disable PERL_TRACK_MEMPOOL for debugging builds DEBPKG:fixes/CVE-2015-8853_regexp_hang - http://bugs.debian.org/821848 [perl #123562] PATCH [perl #123562] Regexp-matching "hangs" DEBPKG:fixes/utf8_regexp_crash - http://bugs.debian.org/820328 [perl #124109] save_re_context(): do "local $n" with no PL_curpm DEBPKG:fixes/regcomp_whitespace_fix - http://bugs.debian.org/820328 [perl #124109] Perl_save_re_context(): re-indent after last commit DEBPKG:fixes/5.20.3/eval_label_crash - http://bugs.debian.org/822336 [perl #123652] eval {label:} crash DEBPKG:fixes/5.20.3/preserve_record_separator - http://bugs.debian.org/822336 [perl #123218] "preserve" $/ if set to a bad value DEBPKG:fixes/5.20.3/test_count_base_rs - http://bugs.debian.org/822336 Fix test count in t/base/rs.t DEBPKG:fixes/5.20.3/remove_get_magic - http://bugs.debian.org/822336 [perl #123739] Remove get-magic from $/ DEBPKG:fixes/5.20.3/speed_up_scalar_g - http://bugs.debian.org/822336 [perl #123202] speed up scalar //g against tainted strings DEBPKG:fixes/5.20.3/accidental_all_features - http://bugs.debian.org/822336 Stop $^H |= 0x1c020000 from enabling all features DEBPKG:fixes/5.20.3/multidimensional_arrays_utf8 - http://bugs.debian.org/822336 [perl #124113] Make check for multi-dimensional arrays be UTF8-aware DEBPKG:fixes/5.20.3/unquoted_utf8_heredoc_terminators - http://bugs.debian.org/822336 Allow unquoted UTF-8 HERE-document terminators DEBPKG:fixes/5.20.3/parentheses_ambiguous_warning_utf8_functions - http://bugs.debian.org/822336 Fix "...without parentheses is ambuguous" warning for UTF-8 function names DEBPKG:fixes/5.20.3/leak_namepv_copy - http://bugs.debian.org/822336 [perl #123786] don't leak the temp utf8 copy of namepv DEBPKG:fixes/5.20.3/h2ph_hex_constants - http://bugs.debian.org/822336 h2ph: correct handling of hex constants for the preamble DEBPKG:fixes/5.20.3/leftbracket_XTERMORDORDOR - http://bugs.debian.org/822336 [perl #123711] Fix crash with 0-5x-l{0} DEBPKG:fixes/5.20.3/fatalize_warnings_unwinding - http://bugs.debian.org/822336 [perl #123398] don't fatalize warnings during unwinding (#123398) DEBPKG:fixes/5.20.3/setpgrp - http://bugs.debian.org/822336 =?UTF-8?q?Don=E2=80=99t=20treat=20setpgrp($nonzero)=20as=20setpgr?= =?UTF-8?q?p(1)?= DEBPKG:fixes/5.20.3/death_unwinding_crash - http://bugs.debian.org/822336 [perl #124156] RT #124156: death during unwinding causes crash DEBPKG:fixes/5.20.3/stashpvn_crash - http://bugs.debian.org/822336 [perl #125541] Fix crash with %::=(); J->${\"::"} DEBPKG:fixes/5.20.3/possessive_quantifier - http://bugs.debian.org/822336 [perl #125825] PATCH: [perl 125825] {n}+ possessive quantifier broken DEBPKG:fixes/5.20.3/quoted_code_crash - http://bugs.debian.org/822336 [perl #123712] Fix /$a[/ parsing DEBPKG:fixes/5.20.3/checking_sub_inwhat - http://bugs.debian.org/822336 [perl #123712] Don't check sub_inwhat DEBPKG:fixes/5.20.3/yylex_loop - http://bugs.debian.org/822336 Fix hang with "@{" DEBPKG:fixes/5.20.3/docs/op - http://bugs.debian.org/822336 Fix apidocs for OP_TYPE_IS(_OR_WAS) - arguments separated by |, not ,. DEBPKG:fixes/5.20.3/docs/encoding - http://bugs.debian.org/822336 perlpodspec: Corrections/adds to detecting =encoding DEBPKG:fixes/5.20.3/docs/SvPV_set - http://bugs.debian.org/822336 improve SvPV_set's docs, it really shouldn't be public API DEBPKG:fixes/5.20.3/docs/autodie - http://bugs.debian.org/822336 Fix warning message regarding "use autodie" and "use open". DEBPKG:fixes/5.20.3/docs/autodie_2_26 - http://bugs.debian.org/822336 perlunicook: Note that autodie >= 2.26 should be okay with "use open". DEBPKG:fixes/5.20.3/docs/setenv - http://bugs.debian.org/822336 Fix setenv() replacement documentation in perlclib DEBPKG:fixes/5.20.3/docs/clib_caution - http://bugs.debian.org/822336 perlhacktips: Add caution about clib ptr returns to static memory DEBPKG:fixes/5.20.3/docs/perlunicook_typos - http://bugs.debian.org/822336 Fix minor code typos in perlunicook DEBPKG:fixes/5.20.3/docs/ook_example - http://bugs.debian.org/822336 [perl #122322] Update OOK example in perlguts DEBPKG:fixes/5.20.3/docs/study_noop - http://bugs.debian.org/822336 perlfunc: mention that study() is currently a noop DEBPKG:fixes/CVE-2016-1238/remove-dot-when-loading - [perl #127834] (perl #127834) remove . from the end of @INC if complex modules are loaded DEBPKG:fixes/CVE-2016-1238/remove-dot-in-padwalker - [perl #127834] perl5db.pl: ensure PadWalker is loaded from standard paths DEBPKG:fixes/CVE-2016-1238/remove-dot-in-dist - [perl #127834] dist/: remove . from @INC when loading optional modules DEBPKG:fixes/CVE-2016-1238/remove-dot-in-cpan - [perl #127834] cpan/: remove . from @INC when loading optional modules DEBPKG:fixes/CVE-2016-1238/customized-encode - Update customized.dat for cpan/Encode/Encode.pm DEBPKG:debian/CVE-2016-1238/test-suite-without-dot - [perl #127810] Patch unit tests to explicitly insert "." into @INC when needed. DEBPKG:debian/CVE-2016-1238/eumm-without-dot - [perl #127810] Add PERL_USE_UNSAFE_INC support to EU::MM for fortify_inc support. DEBPKG:debian/CVE-2016-1238/cpan-without-dot - [perl #127810] Set PERL_USE_UNSAFE_INC for cpan usage DEBPKG:debian/CVE-2016-1238/mb-without-dot - Make Module::Build set PERL_USE_UNSAFE_INC DEBPKG:debian/CVE-2016-1238/sitecustomize-in-etc - Look for sitecustomize.pl in /etc/perl rather than sitelib on Debian systems DEBPKG:fixes/xsloader-eval - [rt.cpan.org #115808] http://bugs.debian.org/829578 =?UTF-8?q?Don=E2=80=99t=20let=20XSLoader=20load=20relative=20path?= =?UTF-8?q?s?= DEBPKG:fixes/file_path_chmod_race - http://bugs.debian.org/863870 [rt.cpan.org #121951] Prevent directory chmod race attack. DEBPKG:fixes/extutils_file_path_compat - [PATCH] Correct the order of tests of chmod(). (#294) DEBPKG:debian/customized_file_path - Update customized.dat for File-Path changes DEBPKG:debian/CVE-2016-1238/base-pm-amends-pt1 - Revert base.pm no-dot-in-inc fixes to make way for a better version DEBPKG:debian/CVE-2016-1238/base-pm-amends-pt2 - [1afa289] Limit dotless-INC effect on base.pm with guard: DEBPKG:fixes/CVE-2017-12837 - http://bugs.debian.org/875596 [perl #131582] regcomp [perl #131582] DEBPKG:fixes/CVE-2017-12883 - http://bugs.debian.org/875597 [perl #131598] PATCH: [perl #131598] DEBPKG:fixes/CVE-2017-12883-5.20 - http://bugs.debian.org/875597 [perl #131598] regcomp: Fix out of bound reads @INC for perl 5.20.2: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/x86_64-linux-gnu/perl5/5.20 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl Environment for perl 5.20.2: HOME=/home/t/thospel LANG=en_US.UTF-8 LANGUAGE (unset) LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/home/t/thospel/bin.Linux:/home/t/thospel/bin:/home/t/thospel/bin.SampleSetup:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:. PERL_BADLANG (unset) SHELL=/bin/bash ```
p5pRT commented 6 years ago

From @jkeenan

On Sun\, 25 Feb 2018 18​:25​:19 GMT\, perl@​ton.iguana.be wrote​:

This is a bug report for perl from perl@​ton.iguana.be\, generated with the help of perlbug 1.40 running under perl 5.20.2.

----------------------------------------------------------------- [Please describe your issue here]

perl -wlE '$_="-4-5"; say -$_|0' Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_=-4 . -5; say -$_|0' Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_="-4-5"; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4-5" isn't numeric in addition (+) at -e line 1. Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_=-4 . -5; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4-5" isn't numeric in addition (+) at -e line 1. 18446744073709551612

That last one is very unexpected. The same thing happens on perl 5.26.1

I do not get the same results as you.

##### $ perl -v | head -2 | tail -1 This is perl 5\, version 20\, subversion 3 (v5.20.3) built for x86_64-linux

$ perl -wlE '$_="-4 . -5"; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4 . -5" isn't numeric in addition (+) at -e line 1. Argument "+4 . -5" isn't numeric in bitwise or (|) at -e line 1. 4

$ perl -v | head -2 | tail -1 This is perl 5\, version 26\, subversion 0 (v5.26.0) built for x86_64-linux

$ perl -wlE '$_="-4 . -5"; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4 . -5" isn't numeric in addition (+) at -e line 1. Argument "+4 . -5" isn't numeric in bitwise or (|) at -e line 1. 4 #####

Thank you very much. -- James E Keenan (jkeenan@​cpan.org)

p5pRT commented 6 years ago

The RT System itself - Status changed from 'new' to 'open'

p5pRT commented 6 years ago

From @iabyn

On Sun\, Feb 25\, 2018 at 02​:10​:41PM -0800\, James E Keenan via RT wrote​:

perl -wlE '$_="-4-5"; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4-5" isn't numeric in addition (+) at -e line 1. Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_=-4 . -5; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4-5" isn't numeric in addition (+) at -e line 1. 18446744073709551612

In the first example\, $_="-4-5"\, $_ uses COW to share the string buffer of the constant string; in $_=-4 . -5\, the expression stops $_ being COW (even though the expression is constant folded).

When the string is used in numeric context\, its pIOK and pNOK flags get set.

However\, the result of the expression -$_ only has its pIOK and pNOK flags set in the non-COW case.

I haven't looked any further yet at why that is.

-- Red sky at night - gerroff my land! Red sky at morning - gerroff my land!   -- old farmers' sayings #14

p5pRT commented 6 years ago

From @abigail

On Sun\, Feb 25\, 2018 at 02​:10​:41PM -0800\, James E Keenan via RT wrote​:

On Sun\, 25 Feb 2018 18​:25​:19 GMT\, perl@​ton.iguana.be wrote​:

This is a bug report for perl from perl@​ton.iguana.be\, generated with the help of perlbug 1.40 running under perl 5.20.2.

----------------------------------------------------------------- [Please describe your issue here]

perl -wlE '$_="-4-5"; say -$_|0' Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_=-4 . -5; say -$_|0' Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_="-4-5"; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4-5" isn't numeric in addition (+) at -e line 1. Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_=-4 . -5; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4-5" isn't numeric in addition (+) at -e line 1. 18446744073709551612

That last one is very unexpected. The same thing happens on perl 5.26.1

I do not get the same results as you.

Is that because you're using different code\, or because of something else?

##### $ perl -v | head -2 | tail -1 This is perl 5\, version 20\, subversion 3 (v5.20.3) built for x86_64-linux

$ perl -wlE '$_="-4 . -5"; $_+0; say -$_|0'

That's not the same as written in the bug report​:

perl -wlE '$_=-4 . -5; $_+0; say -$_|0'

Note the absense of quotes around C\<\< -4 . -5 >> in the report\, while your code puts quotes there.

Useless use of addition (+) in void context at -e line 1. Argument "-4 . -5" isn't numeric in addition (+) at -e line 1. Argument "+4 . -5" isn't numeric in bitwise or (|) at -e line 1. 4

$ perl -v | head -2 | tail -1 This is perl 5\, version 26\, subversion 0 (v5.26.0) built for x86_64-linux

$ perl -wlE '$_="-4 . -5"; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4 . -5" isn't numeric in addition (+) at -e line 1. Argument "+4 . -5" isn't numeric in bitwise or (|) at -e line 1. 4

Abigail

p5pRT commented 6 years ago

From @jkeenan

On Mon\, 26 Feb 2018 11​:39​:05 GMT\, abigail@​abigail.be wrote​:

On Sun\, Feb 25\, 2018 at 02​:10​:41PM -0800\, James E Keenan via RT wrote​:

On Sun\, 25 Feb 2018 18​:25​:19 GMT\, perl@​ton.iguana.be wrote​:

This is a bug report for perl from perl@​ton.iguana.be\, generated with the help of perlbug 1.40 running under perl 5.20.2.

----------------------------------------------------------------- [Please describe your issue here]

perl -wlE '$_="-4-5"; say -$_|0' Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_=-4 . -5; say -$_|0' Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_="-4-5"; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4-5" isn't numeric in addition (+) at -e line 1. Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_=-4 . -5; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4-5" isn't numeric in addition (+) at -e line 1. 18446744073709551612

That last one is very unexpected. The same thing happens on perl 5.26.1

I do not get the same results as you.

Is that because you're using different code\, or because of something else?

##### $ perl -v | head -2 | tail -1 This is perl 5\, version 20\, subversion 3 (v5.20.3) built for x86_64-linux

$ perl -wlE '$_="-4 . -5"; $_+0; say -$_|0'

That's not the same as written in the bug report​:

perl -wlE '$_=-4 . -5; $_+0; say -$_|0'

Note the absense of quotes around C\<\< -4 . -5 >> in the report\, while your code puts quotes there.

You are correct. Please ignore my previous post.

Useless use of addition (+) in void context at -e line 1. Argument "-4 . -5" isn't numeric in addition (+) at -e line 1. Argument "+4 . -5" isn't numeric in bitwise or (|) at -e line 1. 4

$ perl -v | head -2 | tail -1 This is perl 5\, version 26\, subversion 0 (v5.26.0) built for x86_64-linux

$ perl -wlE '$_="-4 . -5"; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4 . -5" isn't numeric in addition (+) at -e line 1. Argument "+4 . -5" isn't numeric in bitwise or (|) at -e line 1. 4

Abigail

Thank you very much. -- James E Keenan (jkeenan@​cpan.org)

p5pRT commented 6 years ago

From @tux

On Sun\, 25 Feb 2018 10​:25​:19 -0800\, "perl@​ton.iguana.be (via RT)" \perlbug\-followup@&#8203;perl\.org wrote​:

perl -wlE '$_="-4-5"; say -$_|0' Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_=-4 . -5; say -$_|0' Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_="-4-5"; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4-5" isn't numeric in addition (+) at -e line 1. Argument "+4-5" isn't numeric in bitwise or (|) at -e line 1. 4

perl -wlE '$_=-4 . -5; $_+0; say -$_|0' Useless use of addition (+) in void context at -e line 1. Argument "-4-5" isn't numeric in addition (+) at -e line 1. 18446744073709551612

That last one is very unexpected. The same thing happens on perl 5.26.1

Step-by-step on the last one ...

$ perl -MDP -wE'$_ = -4 . -5;DDump$_;$_+0;DDump$_;say $_|0;DDump$_' Useless use of addition (+) in void context at -e line 1. SV = PV(0x24679f0) at 0x24b0ab0   REFCNT = 1   FLAGS = (POK\,pPOK)   PV = 0x24839f0 "-4-5"\0   CUR = 4   LEN = 10 Argument "-4-5" isn't numeric in addition (+) at -e line 1. SV = PVNV(0x370b100) at 0x24b0ab0   REFCNT = 1   FLAGS = (POK\,pIOK\,pNOK\,pPOK)   IV = -4   NV = -4   PV = 0x24839f0 "-4-5"\0   CUR = 4   LEN = 10 18446744073709551612 SV = PVNV(0x370b100) at 0x24b0ab0   REFCNT = 1   FLAGS = (POK\,pIOK\,pNOK\,pPOK)   IV = -4   NV = -4   PV = 0x24839f0 "-4-5"\0   CUR = 4   LEN = 10

-- H.Merijn Brand http​://tux.nl Perl Monger http​://amsterdam.pm.org/ using perl5.00307 .. 5.27 porting perl5 on HP-UX\, AIX\, and openSUSE http​://mirrors.develooper.com/hpux/ http​://www.test-smoke.org/ http​://qa.perl.org http​://www.goldmark.org/jeff/stupid-disclaimers/