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

\&{'foo'} not caught by strict refs #900

p5pRT opened this issue Nov 28, 1999 · 2 comments

\&{'foo'} not caught by strict refs #900

p5pRT opened this issue Nov 28, 1999 · 2 comments


Copy link

p5pRT commented Nov 28, 1999

Migrated from (status was 'resolved')

Searchable as RT1834$

Copy link

p5pRT commented Nov 28, 1999


\&{'foo'} is allowed under strict refs, while \${'foo'} and &{'foo'} are
not. The following program runs (and prints "foo") if the last two lines
are commented out, but either line will cause a compile time error, "Can't
use string as a (subroutine|SCALAR) ref", if enabled.

#!/usr/bin/perl -w

use strict;
use vars qw( $foo $bar );

# Make sure $foo and &foo are both defined
$foo = 'foo';
sub foo { print "foo\n"; }

$bar = \&{'foo'};
#$bar = \${'foo'};

(Something tells me that I've heard of this exception somewhere, but I can't
find it documented.)


Perl Info

Site configuration information for perl 5.00503:

Configured by torin at Wed Sep 22 00:18:38 PDT 1999.

Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration:
    osname=linux, osvers=2.0.36, archname=i386-linux
    uname='linux perv 2.0.36 #2 wed nov 18 03:00:48 pst 1998 i686 unknown '
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef useperlio=undef d_sfio=undef
    cc='cc', optimize='-O2', gccversion=2.95.1 19990809 (prerelease)
    cppflags='-Dbool=char -DHAS_BOOL -D_REENTRANT -DDEBIAN -I/usr/local/include'
    ccflags ='-Dbool=char -DHAS_BOOL -D_REENTRANT -DDEBIAN -I/usr/local/include'
    stdchar='char', d_stdstdio=undef, usevfork=false
    intsize=4, longsize=4, ptrsize=4, doublesize=8
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    alignbytes=4, usemymalloc=n, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lnsl -lndbm -lgdbm -ldbm -ldb -ldl -lm -lc -lposix -lcrypt
    libc=, so=so, useshrplib=false, libperl=libperl.a
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
    cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'

Locally applied patches:

@INC for perl 5.00503:

Environment for perl 5.00503:
    LANG (unset)
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PERL_BADLANG (unset)

Copy link

p5pRT commented Nov 28, 1999

From @TimToady

If I recall, part of the reasoning was that making it catch that would break
autoloading, when done with

  goto &$AUTOLOAD;

But it oughta be documented.


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet

No branches or pull requests

1 participant