develooper Front page | perl.perl5.porters | Postings from June 2018

[perl #133235] When does qx/STRING/ return undef?

From:
Peter Oliver
Date:
June 1, 2018 09:40
Subject:
[perl #133235] When does qx/STRING/ return undef?
Message ID:
rt-4.0.24-7826-1527595735-1860.133235-75-0@perl.org
# New Ticket Created by  Peter Oliver 
# Please include the string:  [perl #133235]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/Ticket/Display.html?id=133235 >



This is a bug report for perl from rt.perl.org@mavit.org.uk,
generated with the help of perlbug 1.40 running under perl 5.26.2.


-----------------------------------------------------------------
The perlop man page says that the qx/STRING/ operator returns "undef if the command failed".  It seems to me that this is misleading, because it does not go on to explain when the command is considered to have failed.  The reader might reasonably expect that qx/STRING/ will return undef if the command exits non-zero, but this is not the case.

I suspect that qx/STRING/ only returns undef if forking and execing /bin/sh fails, which isn't what I'd think of as "the command" in this context.
-----------------------------------------------------------------
---
Flags:
    category=docs
    severity=low
---
Site configuration information for perl 5.26.2:

Configured by Red Hat, Inc. at Mon Apr 16 12:45:12 UTC 2018.

Summary of my perl5 (revision 5 version 26 subversion 2) configuration:
   
  Platform:
    osname=linux
    osvers=4.15.14-300.fc27.x86_64
    archname=x86_64-linux-thread-multi
    uname='linux buildhw-03.phx2.fedoraproject.org 4.15.14-300.fc27.x86_64 #1 smp thu mar 29 16:13:44 utc 2018 x86_64 x86_64 x86_64 gnulinux '
    config_args='-des -Doptimize=none -Dccflags=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -Dldflags=-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Dccdlflags=-Wl,--enable-new-dtags -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Dlddlflags=-shared -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Dshrpdir=/usr/lib64 -DDEBUGGING=-g -Dversion=5.26.2 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl5 -Dsitearch=/usr/local/lib64/perl5 -Dprivlib=/usr/share/perl5 -Dvendorlib=/usr/share/perl5/vendor_perl -Darchlib=/usr/lib64/perl5
-Dvendorarch=/usr/lib64/perl5/vendor_perl -Darchname=x86_64-linux-thread-multi -Dlibpth=/usr/local/lib64 /lib64 /usr/lib64 -Duseshrplib -Dusethreads -Duseithreads -Dusedtrace=/usr/bin/dtrace -Duselargefiles -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto -Dscriptdir=/usr/bin -Dusesitecustomize -Duse64bitint'
    hint=recommended
    useposix=true
    d_sigaction=define
    useithreads=define
    usemultiplicity=define
    use64bitint=define
    use64bitall=define
    uselongdouble=undef
    usemymalloc=n
    default_inc_excludes_dot=define
    bincompat5005=undef
  Compiler:
    cc='gcc'
    ccflags ='-D_REENTRANT -D_GNU_SOURCE -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fwrapv -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
    optimize='	-g'
    cppflags='-D_REENTRANT -D_GNU_SOURCE -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fwrapv -fno-strict-aliasing -I/usr/local/include'
    ccversion=''
    gccversion='7.3.1 20180303 (Red Hat 7.3.1-5)'
    gccosandvers=''
    intsize=4
    longsize=8
    ptrsize=8
    doublesize=8
    byteorder=12345678
    doublekind=3
    d_longlong=define
    longlongsize=8
    d_longdbl=define
    longdblsize=16
    longdblkind=3
    ivtype='long'
    ivsize=8
    nvtype='double'
    nvsize=8
    Off_t='off_t'
    lseeksize=8
    alignbytes=8
    prototype=define
  Linker and Libraries:
    ld='gcc'
    ldflags ='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fstack-protector-strong -L/usr/local/lib'
    libpth=/usr/local/lib64 /lib64 /usr/lib64 /usr/local/lib /usr/lib /lib/../lib64 /usr/lib/../lib64 /lib
    libs=-lpthread -lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat
    perllibs=-lpthread -lresolv -lnsl -ldl -lm -lcrypt -lutil -lc
    libc=libc-2.26.so
    so=so
    useshrplib=true
    libperl=libperl.so
    gnulibc_version='2.26'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs
    dlext=so
    d_dlsymun=undef
    ccdlflags='-Wl,--enable-new-dtags -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld'
    cccdlflags='-fPIC'
    lddlflags='-lpthread -shared -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -L/usr/local/lib -fstack-protector-strong'

Locally applied patches:
    Fedora Patch1: Removes date check, Fedora/RHEL specific
    Fedora Patch3: support for libdir64
    Fedora Patch4: use libresolv instead of libbind
    Fedora Patch5: USE_MM_LD_RUN_PATH
    Fedora Patch6: Provide MM::maybe_command independently (bug #1129443)
    Fedora Patch7: Dont run one io test due to random builder failures
    Fedora Patch15: Define SONAME for libperl.so
    Fedora Patch16: Install libperl.so to -Dshrpdir value
    Fedora Patch22: Document Math::BigInt::CalcEmu requires Math::BigInt (CPAN RT#85015)
    Fedora Patch26: Make *DBM_File desctructors thread-safe (RT#61912)
    Fedora Patch27: Make PadlistNAMES() lvalue again (CPAN RT#101063)
    Fedora Patch30: Replace EU::MakeMaker dependency with EU::MM::Utils in IPC::Cmd (bug #1129443)
    Fedora Patch31: Make File::Glob more resistant against degenerative matching (RT#131211)
    Fedora Patch36: Fix glob UTF-8 flag on a glob reassignment (RT#131263)
    Fedora Patch38: Fix handling backslashes in PATH environment variable when executing "perl -S" (RT#129183)
    Fedora Patch45: Fix File::Glob rt131211.t test random failures
    Fedora Patch46: Fix t/op/hash.t test random failures
    Fedora Patch47: Parse caret variables with subscripts as normal variables inside ${...} escaping (RT#131664)
    Fedora Patch49: Do not display too many bytes when reporting malformed UTF-8 character
    Fedora Patch51: Fix error message for "our sub foo::bar" (RT#131679)
    Fedora Patch52: Fix executing arybase::_tie_it() in Safe compartement (RT#131588)
    Fedora Patch54: Fix splitting non-ASCII strings if unicode_strings feature is enabled (RT#130907)
    Fedora Patch55: Fix compiler warnings in code generated by ExtUtils::Constant (CPAN RT#63832)
    Fedora Patch56: Fix compiler warnings in code generated by ExtUtils::Constant (CPAN RT#101487)
    Fedora Patch58: Fix unreliable Time-HiRes tests (CPAN RT#122819)
    Fedora Patch61: Fix Term::ReadLine not to create spurious &STDERR files (RT#132008)
    Fedora Patch64: Fix an overflow when parsing a character range with no preceding character (RT#132245)
    Fedora Patch65: Fix walking symbol table for ISA in Carp
    Fedora Patch66: Fix handling file names with null bytes in stat and lstat functions (RT#131895)
    Fedora Patch67: Fix a crash when untying an object witout a stash
    Fedora Patch68: Fix deparsing of transliterations with unprintable characters (RT#132405)
    Fedora Patch69: Fix error reporting on do() on a directory (RT#125774)
    Fedora Patch70: Fix stack manipulation when a lexical subroutine is defined in a do block in a member of an iteration list (RT#132442)
    Fedora Patch71: Fix setting $! when statting a closed filehandle (RT#108288)
    Fedora Patch72: Fix tainting of s/// with overloaded replacement (RT#115266)
    Fedora Patch73: Expand system() arguments before a fork (RT#121105)
    Fedora Patch76: Avoid undefined behavior when copying memory in Glob and pp_caller (RT#131746)
    Fedora Patch78: Fix compatibility with libxcrypt (bug #1536752)
    Fedora Patch79: Link XS modules to pthread library to fix linking with -z defs
    Fedora Patch80: Fix parsing braced subscript after parentheses (RT#8045)
    Fedora Patch200: Link XS modules to libperl.so with EU::CBuilder on Linux
    Fedora Patch201: Link XS modules to libperl.so with EU::MM on Linux

---
@INC for perl 5.26.2:
    /usr/local/lib64/perl5
    /usr/local/share/perl5
    /usr/lib64/perl5/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib64/perl5
    /usr/share/perl5

---
Environment for perl 5.26.2:
    HOME=/home/mavit
    LANG=en_GB.UTF-8
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/sbin
    PERL_BADLANG (unset)
    PERL_LOCAL_LIB_ROOT=
    SHELL=/bin/tcsh




nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About