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

Documentation for => needs clarifying? #37

Closed
p5pRT opened this issue Jun 3, 1999 · 4 comments
Closed

Documentation for => needs clarifying? #37

p5pRT opened this issue Jun 3, 1999 · 4 comments

Comments

@p5pRT
Copy link

p5pRT commented Jun 3, 1999

Migrated from rt.perl.org#838 (status was 'resolved')

Searchable as RT838$

@p5pRT
Copy link
Author

p5pRT commented Jun 3, 1999

From garethr@cre.canon.co.uk

The following program​:

  #!perl -w
  %a = ( one => 1 );
  %b = ( one
  => 1 );

produces the output

  Unquoted string "one" may clash with future reserved word at /tmp/test.pl line 4.

It appears that the auto-quoting behaviour of the => operator does not
work if a newline intervenes between the unquoted word and the =>.

The perlop manpage just says

  The => digraph is mostly just a synonym for the comma
  operator. It's useful for documenting arguments that come
  in pairs. As of release 5.001, it also forces any word to
  the left of it to be interpreted as a string.

If the behaviour of => is left unchanged, this should be changed to
something like

  it also forces an unquoted word to
  the left of it on the same line to be interpreted as a string.

Alternatively, the behaviour of => could be changed so that any amount
of whitespace can intervene between the unquoted word and the operator.

Perl Info


Site configuration information for perl 5.00502:

Configured by abw at Thu Nov 19 10:50:08 GMT 1998.

Summary of my perl5 (5.0 patchlevel 5 subversion 2) configuration:
  Platform:
    osname=solaris, osvers=2.6, archname=sun4-solaris
    uname='sunos bandanna 5.6 generic_105181-03 sun4u sparc sunw,ultra-1 '
    hint=previous, useposix=true, d_sigaction=define
    usethreads=undef useperlio=undef d_sfio=undef
  Compiler:
    cc='gcc', optimize='-O', gccversion=2.8.0
    cppflags='-I/opt/gnu/include -I/user/perl/build/include'
    ccflags ='-I/opt/gnu/include -I/user/perl/build/include'
    stdchar='unsigned char', d_stdstdio=define, usevfork=false
    intsize=4, longsize=4, ptrsize=4, doublesize=8
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    alignbytes=8, usemymalloc=n, prototype=define
  Linker and Libraries:
    ld='gcc', ldflags ='-L/opt/gnu/lib -L/user/perl/build/lib'
    libpth=/opt/gnu/lib /lib /usr/lib /usr/ccs/lib /user/perl/build/lib
    libs=-lsocket -lnsl -lgdbm -ldl -lm -lc -lcrypt -ldb
    libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
    cccdlflags='-fPIC', lddlflags='-G -L/opt/gnu/lib -L/user/perl/build/lib'

Locally applied patches:
    


@INC for perl 5.00502:
    /apps/perl5/lib/5.00502/sun4-solaris
    /apps/perl5/lib/5.00502
    /apps/perl5/lib/site_perl/5.005/sun4-solaris
    /apps/perl5/lib/site_perl/5.005
    .


Environment for perl 5.00502:
    HOME=/user/garethr
    LANG=C
    LOGDIR (unset)
    PERL_BADLANG (unset)
    SHELL=/cre/bin/bash

@p5pRT
Copy link
Author

p5pRT commented Mar 20, 2000

From [Unknown Contact. See original ticket]

Here's the sample code​:

  %a = (one => 1); # no warning
  %a = (one
  => 1); # warning about "bareword interpreted..."

This should be fixed in the tokenizer and not the documentation.
Any takers?

Nat

@p5pRT
Copy link
Author

p5pRT commented Mar 22, 2000

From [Unknown Contact. See original ticket]

Nathan Torkington wrote​:

Here's the sample code​:

%a = (one => 1); # no warning
%a = (one
=> 1); # warning about "bareword interpreted..."

This should be fixed in the tokenizer and not the documentation.
Any takers?

This works for small values of tested. I leave possible side effect
prevention to someone who knows what they're doing.

Rick

*** perl-5.5.670/toke.c.old Sat Feb 26 00​:24​:50 2000
--- perl-5.5.670/toke.c Wed Mar 22 12​:07​:18 2000
***************
*** 3767,3776 ****
  }
  }
 
- /* If followed by a paren, it's certainly a subroutine. */
 
  PL_expect = XOPERATOR;
  s = skipspace(s);
  if (*s == '(') {
  CLINE;
  if (gv && GvCVu(gv)) {
--- 3767,3785 ----
  }
  }
 
 
  PL_expect = XOPERATOR;
  s = skipspace(s);
+
+ /* Is this a word before a => operator? */
+ if (strnEQ(s,"=>",2)) {
+ CLINE;
+ yylval.opval = (OP*)newSVOP(OP_CONST, 0, newSVpv(PL_tokenbuf,0));
+ yylval.opval->op_private = OPpCONST_BARE;
+ TERM(WORD);
+ }
+
+ /* If followed by a paren, it's certainly a subroutine. */
  if (*s == '(') {
  CLINE;
  if (gv && GvCVu(gv)) {

@p5pRT
Copy link
Author

p5pRT commented Nov 28, 2003

From The RT System itself

Fixed by Change 5977
4/27 in perl current

@p5pRT p5pRT closed this as completed Nov 28, 2003
This was referenced Oct 18, 2019
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

1 participant