Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

String/Number interpretation of a string #16439

Open
p5pRT opened this issue Feb 25, 2018 · 7 comments
Open

String/Number interpretation of a string #16439

p5pRT opened this issue Feb 25, 2018 · 7 comments

Comments

@p5pRT
Copy link

@p5pRT p5pRT commented Feb 25, 2018

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

Searchable as RT132908$

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 25, 2018

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
Copy link
Author

@p5pRT p5pRT commented Feb 25, 2018

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
Copy link
Author

@p5pRT p5pRT commented Feb 25, 2018

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

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 26, 2018

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
Copy link
Author

@p5pRT p5pRT commented Feb 26, 2018

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
Copy link
Author

@p5pRT p5pRT commented Feb 26, 2018

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
Copy link
Author

@p5pRT p5pRT commented Feb 26, 2018

From @Tux

On Sun, 25 Feb 2018 10​:25​:19 -0800, "perl@​ton.iguana.be (via RT)"
<perlbug-followup@​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/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants