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

Re: New feature proposal : <<>> to disable magic open of ARGV

Thread Previous | Thread Next
From:
H.Merijn Brand
Date:
October 3, 2014 11:59
Subject:
Re: New feature proposal : <<>> to disable magic open of ARGV
Message ID:
20141003135912.5c7d45d8@pc09.procura.nl
On Fri, 3 Oct 2014 13:44:32 +0200, Rafael Garcia-Suarez
<rgs@consttype.org> wrote:

> Hi, I see the failures on the reports now:
> 
> ../t/io/argv.t .............................................. FAILED 29-32
> 
> Could you run the test by hand and send the output?

$ ./perl -I../lib harness -v io/argv.t
io/argv.t ..
1..36
ok 1 - <> from two files
ok 2 - <> from a file and STDIN
ok 3 - <> from just STDIN
ok 4 - $ARGV is the file name
ok 5 - $ARGV is - for explicit STDIN
ok 6 - $ARGV is - for implicit STDIN
ok 7 - eof() doesn't segfault
ok 8 - $. counts <>
ok 9 - <> from @ARGV
ok 10
ok 11
ok 12
ok 13 - eof() true on unopened filehandle
ok 14 - STDIN has something
ok 15
ok 16 - eof() true with empty @ARGV
ok 17
ok 18
ok 19 - eof() true after closing ARGV
ok 20
ok 21
ok 22
ok 23
ok 24
ok 25
ok 26 - <<>>
ok 27 - <<>> and rcatline
ok 28 - <<>> from just STDIN (no argument)
ok 29 - $ARGV is - for STDIN with <<>>
not ok 30 - <<>> does not treat - as STDIN
# Failed test 30 - <<>> does not treat - as STDIN at io/argv.t line 191
#      got "Can\'t open -: A file or directory in the path name does not exist. at -e line 1.\n"
# expected "Can\'t open -: No such file or directory at -e line 1.\n"
not ok 31 - <<>> does not treat - as STDIN
# Failed test 31 - <<>> does not treat - as STDIN at io/argv.t line 199
#      got "Can\'t open : A file or directory in the path name does not exist. at -e line 1.\n"
# expected "Can\'t open : No such file or directory at -e line 1.\n"
not ok 32 - <<>> does not treat - as STDIN
# Failed test 32 - <<>> does not treat - as STDIN at io/argv.t line 205
#      got "Can\'t open : A file or directory in the path name does not exist. at -e line 1.\n"
# expected "Can\'t open : No such file or directory at -e line 1.\n"
not ok 33 - <<>> does not treat ...| as fork
# Failed test 33 - <<>> does not treat ...| as fork at io/argv.t line 216
#      got "Can\'t open echo foo |: A file or directory in the path name does not exist. at -e line 1.\n"
# expected "Can\'t open echo foo |: No such file or directory at -e line 1.\n"
# Failed test 34 - <<>> does not treat ...| as fork after eof at io/argv.t line 223
#      got "Can\'t open echo foo |: A file or directory in the path name does not exist. at -e line 1, <> line 3.\n"
# expected "Can\'t open echo foo |: No such file or directory at -e line 1, <> line 3.\n"
not ok 34 - <<>> does not treat ...| as fork after eof
ok 35 - ARGV aliasing and eof()
ok 36 - deleting $::{ARGV}
Failed 5/36 subtests

Test Summary Report
-------------------
io/argv.t (Wstat: 0 Tests: 36 Failed: 5)
  Failed tests:  30-34
Files=1, Tests=36,  0 wallclock secs ( 0.03 usr  0.00 sys +  0.21 cusr  0.14 csys =  0.38 CPU)
Result: FAIL

AIX 5.3.0.0/TL12-05  IBM,9115-505 PowerPC_POWER5/1898(2)  3920 Mb

$ ./perl -I../lib -V
Summary of my perl5 (revision 5 version 21 subversion 5) configuration:
  Snapshot of: f63a114b48be4e9c44534b6e07ecdeea8be2ef71
  Platform:
    osname=aix, osvers=5.3.0.0, archname=aix-thread-multi-64all
    uname='aix i3 3 5 0004898ad300 '
    config_args='-des -Dcc=gcc -Dusedevel -Duseithreads -Duse64bitall'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc -maix64', ccflags ='-D_THREAD_SAFE -maix64 -DPERL_DONT_CREATE_GVSV -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -fno-strict-aliasing -pipe -I/pro/local/include -maix64 -DUSE_64_BIT_ALL -D_FORTIFY_SOURCE=2',
    optimize='-O',
    cppflags='-D_THREAD_SAFE -maix64 -DPERL_DONT_CREATE_GVSV -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -fno-strict-aliasing -pipe -I/pro/local/include'
    ccversion='', gccversion='4.2.4', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=87654321
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8, longdblkind=-1
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='gcc -maix64', ldflags =' -L/usr/local/ppc64/lib64 -Wl,-b64 -L/pro/local/lib -Wl,-brtl -Wl,-bdynamic -Wl,-b64'
    libpth=/usr/local/ppc64/lib /usr/lib /usr/local/ppc64/lib64 /lib /usr/ccs/lib /usr/local/lib /usr/lib64
    libs=-lbind -lnsl -ldbm -ldb -ldl -lld -lm -lcrypt -lpthreads -lc
    perllibs=-lbind -lnsl -ldl -lld -lm -lcrypt -lpthreads -lc
    libc=/lib/libc.a, so=a, useshrplib=false, libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_aix.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Xlinker -bE:/opt/perl64/lib/5.21.5/aix-thread-multi-64all/CORE/perl.exp'
    cccdlflags=' ', lddlflags='  -Wl,-b64 -Wl,-bhalt:4 -Wl,-G -Wl,-bI:$(PERL_INC)/perl.exp -Wl,-bE:$(BASEEXT).exp -Wl,-bnoentry -lpthreads -lc -lm -L/usr/local/ppc64/lib64 -L/pro/local/lib'


Characteristics of this binary (from libperl):
  Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS
                        PERL_DONT_CREATE_GVSV
                        PERL_HASH_FUNC_ONE_AT_A_TIME_HARD
                        PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
                        PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV
                        PERL_USE_DEVEL USE_64_BIT_ALL USE_64_BIT_INT
                        USE_ITHREADS USE_LARGE_FILES USE_LOCALE
                        USE_LOCALE_COLLATE USE_LOCALE_CTYPE
                        USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_PERLIO
                        USE_PERL_ATOF USE_REENTRANT_API
  Locally applied patches:
        SMOKEf63a114b48be4e9c44534b6e07ecdeea8be2ef71
  Built under aix
  Compiled at Oct  3 2014 13:36:07
  @INC:
    ../lib
    /opt/perl64/lib/site_perl/5.21.5/aix-thread-multi-64all
    /opt/perl64/lib/site_perl/5.21.5
    /opt/perl64/lib/5.21.5/aix-thread-multi-64all
    /opt/perl64/lib/5.21.5
    .

> On 3 October 2014 12:27, Michael Felt <aixtools@gmail.com> wrote:
> > this may have nothing to do with this thread, other than it is the only one
> > search returned. I see a lot of argv.t test failures on my AIX smokers. fyi.
> >
> > On Sep 30, 2014 8:34 AM, "Rafael Garcia-Suarez" <rgs@consttype.org> wrote:
> >>
> >> On 29 July 2014 23:54, Ricardo Signes <perl.p5p@rjbs.manxome.org> wrote:
> >> > * Rafael Garcia-Suarez <rgs@consttype.org> [2014-07-24T11:51:40]
> >> >> I believe that this was discussed here some years ago, and that this
> >> >> was suggested by TomC. Anyway, I pushed a patch on rgs/nomagicopen.
> >> >> The patch is incomplete as it lacks docs and tests. I welcome feedback
> >> >> on the intent of the feature.
> >> >
> >> > I'm still not crazy about the one-off syntax addition, but I think that
> >> > it's
> >> > the best we're going to see without setting an unrealistic bar for a
> >> > new,
> >> > generic feature.  If we ever *do* get <> adverbs, we can call this sugar
> >> > for
> >> > one or blah blah blah it doesn't matter that much right now. :-)
> >> >
> >> > While my heart wants -n to be safe, my conscience tells me that we'll
> >> > break
> >> > enough (bizarre, to my mind (except maybe regarding "-")) expectations
> >> > that it
> >> > isn't worth doing.  Probably we want -P and -N for safe opening.
> >> >
> >> > I am gratified to see that <<X>> fails for any X, as you've only made
> >> > the
> >> > literal construct <<>> iterate.  Awesome.  I think we're going to want a
> >> > better
> >> > error message, if possible, though, than:
> >> >
> >> >   ~/code/perl5$ ./perl -e 'while (<<ARGV>>) { print }' 'ls |'
> >> >   Can't find string terminator "ARGV" anywhere before EOF at -e line 1.
> >> >
> >> > Something roughly like "safe <<>> operator meaningless on concrete
> >> > filehandles"
> >> > — that's not right, but you get the idea.
> >> >
> >> > I don't think I have any further thoughts on it.
> >>
> >> I have now merged this in blead, with more tests, and docs by Peter
> >> Martini
> >> and myself. I also added tests for the $ARGV variable, that was not
> >> tested.
> >>
> >> I'm not too sure about the error message; it's not totally trivial to
> >> change, since
> >> a script like this one, for example, will print "8":
> >>
> >> print <<FOO>> 1;
> >> 16
> >> FOO


-- 
H.Merijn Brand  http://tux.nl   Perl Monger  http://amsterdam.pm.org/
using perl5.00307 .. 5.19   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/

Thread Previous | Thread Next


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