develooper Front page | perl.perl5.porters | Postings from January 2014

[perl #121085] stat dies on valid filename not existing

Thread Previous | Thread Next
Linda Walsh
January 26, 2014 08:46
[perl #121085] stat dies on valid filename not existing
Message ID:
# New Ticket Created by  Linda Walsh 
# Please include the string:  [perl #121085]
# in the subject line of all future correspondence about this issue. 
# <URL: >

This is a bug report for perl from,
generated with the help of perlbug 1.39 running under perl 5.16.3.

[Please describe your issue here]

# next line uses ^V^J after 'test' to create file w/NL @ end of name
# note.  This is a valid unix name.

> touch "test
Ishtar:/tmp> perl -MP -we 'use strict;
if (-e "test
") {
P "test exists";
test exists				## this works
Ishtar:/tmp> perl -MP -we 'use strict;
if (-e "test2
") {
P "test exists";
Unsuccessful stat on filename containing newline at -e line 2.

## ^^ perl dies at this point.. not a valid response to a
non-existent filename as following test doesn't die:

Ishtar:/tmp> perl -MP -w -e 'use strict;
if (-e "test2"
) { 
P "test exists";
#(no output)

Perl should not die on a stat call failure.

(FWIW, the file name was downloaded from a website that had
something like
<... src="image.jpg

The file downloaded correctly though I think the 'nl' was
stripped off, but for a program storing the output from
a download html prog "as is", it was checking to see if the file
had already been d/l'ed and was stored locally.

Note that it's existance is verified if the file exists -- it
is only if the file doesn't exist that perl throws an invalid 
error message and dies.

[Please do not change anything below this line]
Site configuration information for perl 5.16.3:

Configured by law at Wed Jan 22 12:58:58 PST 2014.

Summary of my perl5 (revision 5 version 16 subversion 3) configuration:
    osname=linux, osvers=3.12.0-isht-van, archname=x86_64-linux-thread-multi-ld
    uname='linux ishtar 3.12.0-isht-van #1 smp preempt wed nov 13 16:50:51 pst 2013 x86_64 x86_64 x86_64 gnulinux '
    hint=previous, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=define
    usemymalloc=n, bincompat5005=undef
    cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-g -O2',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
    ccversion='', gccversion='4.8.1 20130909 [gcc-4_8-branch revision 202388]', 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='long double', nvsize=16, Off_t='off_t', lseeksize=8
    alignbytes=16, prototype=define
  Linker and Libraries:
    ld='gcc', ldflags ='-g -fstack-protector -fPIC'
    libpth=/usr/lib64 /lib64
    libs=-lnsl -lndbm -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc -lgdbm_compat
    perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
    libc=/lib/, so=so, useshrplib=true,
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/home/perl/perl-5.16.3/lib/x86_64-linux-thread-multi-ld/CORE'
    cccdlflags='-fPIC', lddlflags='-shared -g -O2 -fstack-protector -fPIC'

Locally applied patches:

@INC for perl 5.16.3:

Environment for perl 5.16.3:
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PERL5OPT=-Mutf8 -CSA -I/home/law/bin/lib
    PERL_BADLANG (unset)

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About