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

goto in format #12241

Open
p5pRT opened this issue Jul 1, 2012 · 3 comments
Open

goto in format #12241

p5pRT opened this issue Jul 1, 2012 · 3 comments

Comments

@p5pRT
Copy link

p5pRT commented Jul 1, 2012

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

Searchable as RT113936$

@p5pRT
Copy link
Author

p5pRT commented Jul 1, 2012

From @cpansprout

Dave Mitchell brought up something like this a while ago, but I have not seen any ticket for it​:

$ ./perl -Ilib -e 'format foo =' -e '@​<<<<<' -e 'goto FOO; FOO​: 1,2,3' -e. -e '' -e 'write foo'
Can't "goto" out of a pseudo block at -e line 3.


Flags​:
  category=core
  severity=low


Site configuration information for perl 5.17.2​:

Configured by sprout at Mon Jun 25 13​:28​:03 PDT 2012.

Summary of my perl5 (revision 5 version 17 subversion 2) configuration​:
  Snapshot of​: 49f4c4e
  Platform​:
  osname=darwin, osvers=10.5.0, archname=darwin-2level
  uname='darwin pint.local 10.5.0 darwin kernel version 10.5.0​: fri nov 5 23​:20​:39 pdt 2010; root​:xnu-1504.9.17~1release_i386 i386 '
  config_args='-de -DDEBUGGING -Dusedevel'
  hint=recommended, useposix=true, d_sigaction=define
  useithreads=undef, usemultiplicity=undef
  useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
  use64bitint=undef, use64bitall=undef, uselongdouble=undef
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='cc', ccflags ='-fno-common -DPERL_DARWIN -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include',
  optimize='-O3 -g',
  cppflags='-fno-common -DPERL_DARWIN -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
  ccversion='', gccversion='4.2.1 (Apple Inc. build 5664)', gccosandvers=''
  intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
  ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
  alignbytes=8, prototype=define
  Linker and Libraries​:
  ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags =' -fstack-protector -L/usr/local/lib'
  libpth=/usr/local/lib /usr/lib
  libs=-ldbm -ldl -lm -lutil -lc
  perllibs=-ldl -lm -lutil -lc
  libc=, so=dylib, useshrplib=false, libperl=libperl.a
  gnulibc_version=''
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
  cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -fstack-protector'

Locally applied patches​:
 


@​INC for perl 5.17.2​:
  /usr/local/lib/perl5/site_perl/5.17.2/darwin-2level
  /usr/local/lib/perl5/site_perl/5.17.2
  /usr/local/lib/perl5/5.17.2/darwin-2level
  /usr/local/lib/perl5/5.17.2
  /usr/local/lib/perl5/site_perl
  .


Environment for perl 5.17.2​:
  DYLD_LIBRARY_PATH (unset)
  HOME=/Users/sprout
  LANG=en_US.UTF-8
  LANGUAGE (unset)
  LD_LIBRARY_PATH (unset)
  LOGDIR (unset)
  PATH=/usr/bin​:/bin​:/usr/sbin​:/sbin​:/usr/local/bin​:/usr/X11/bin​:/usr/local/bin
  PERL_BADLANG (unset)
  SHELL=/bin/bash

@p5pRT
Copy link
Author

p5pRT commented Jan 23, 2017

From zefram@fysh.org

It's easy enough to postpone the pseudo-block check until after the search
for the label at the format's top level, as I did for multicalled subs
in 3c157b3. But although that *permits*
gotos at that level, labels at top level don't actually work.

The op_unscope() process nulls out all the top-level cops, including
those bearing labels, so the labels are invisible. Perhaps op_unscope()
should decline to null out cops that have labels, or decline to do
anything if there are any labels, but any arrangement of this nature
raises the spectre of labels effectively changing unrelated semantics.
Without top-level labels, a goto that reaches top level can only be used
to jump to labels nested inside block constructs, a deprecated usage.
I don't think it's useful to enable that on its own.

The usefulness of any kind of goto between elements of a format list is
very dubious. Simple uses tend to result in values being put into the
wrong output fields.

So, should we make labels work at the top level, or should we just
deprecate the use of goto at the top level of formats?

-zefram

@p5pRT
Copy link
Author

p5pRT commented Jan 23, 2017

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

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