From comp.lang.perl Thu Feb 17 13:28:23 1994
Newsgroups: comp.lang.perl
Path: ruuinf!sun4nl!EU.net!Germany.EU.net!netmbx.de!zrz.TU-Berlin.DE!zib-berlin.de!math.fu-berlin.de!MathWorks.Com!europa.eng.gtefsd.com!wx.gtegsc.com!news.cerf.net!netlabs!lwall
From: lwall@netlabs.com (Larry Wall)
Subject: Re: Perl 5 Alpha 6 available
Message-ID: <1994Feb16.222546.16901@netlabs.com>
Organization: NetLabs, Inc.
Date: Wed, 16 Feb 1994 22:25:46 GMT
Lines: 60

Alpha 6 is available from ftp.netlabs.com:pub/outgoing/perl5.0/perl5a6.tar.Z.
The link here is pretty slow, so you might want to wait for it to show up
in places like metronet.com, unless you're a mirror site like metronet.com.
I know it's already on ftp.cs.ruu.nl:pub/PERL/perl5.0/perl5a6.tar.gz,
courtesy Henk Penning.  Chances are by the time this message arrives you'll
also see it in places like:
   ftp.cis.ufl.edu:/pub/perl/src/5.0/perl5a6.tar.gz
   <ftp://ftp.metronet.com/pub/perl/source/perl5a6.tar.Z>
   <gopher://gopher.metronet.com/The PERL Programming Lang/source/perl5a6.tar.Z>

As with previous alphas, this alpha is unsupported in the traditional
sense, and there is not yet any Configure support.  It comes prebuilt
for a SunOS Sparc 2.

New things since Alpha 5
------------------------
    require with a bare word now does an immediate require at compile time.
    So "require POSIX" is equivalent to "BEGIN { require 'POSIX.pm' }".

    require with a number checks to see that the version of Perl that is
    currently running is at least that number.

    Dynamic loading of external modules is now supported.

    There is a new quote form qw//, which is equivalent to split(' ', q//).

    Assignment of a reference to a glob value now just replaces the
    single element of the glob corresponding to the reference type:
	*foo = \$bar, *foo = \&bletch;

    Filehandle methods are now supported:
	output_autoflush STDOUT 1;

    There is now an "English" module that provides human readable translations
    for cryptic variable names.

    Autoload stubs can now call the replacement subroutine with goto &realsub.

    Subroutines can be defined lazily in any package by declaring an AUTOLOAD
    routine, which will be called if a non-existent subroutine is called in
    that package.

In particular, you'll want to look at some of the .pm files in the lib
directory, and see how they do business.  The POSIX module is not
complete, but the interface is done, and a few of the routines are
roughed in.  But there's some interesting stuff in there: if you use
POSIX::uname, you're calling a linked in external C subroutine.  If you
call POSIX::getpid, you'll get an autoloaded Perl subroutine.  The
SDBM_File module is an example of a dynamically loaded C library.

Some of you folks who support .pl files and usub extensions should
start thinking about translating them to .pm files and xsub
extensions.  I can't do this all by myself--I'll try to coordinate
things, but if Perl 5 is to be all that it can be, it needs to be a
community effort.  Pitch in where you can.  If there are nifty
extensions in other languages that you'd like to see in Perl, we now
have the apparatus (if not the documentation) to easily add similar
things.  And if you're working on something substantial, let the folks
here know what you're working on so that we don't duplicate effort.

And thank you very much for all you've done already.  Nobody can design
a useful language in a vacuum, and it's even harder to design a language
in gas.  I value your liquid thinking and your solid support.  And no,
I can't think of any way offhand to work plasma into the analogy...  :-)

Larry

From comp.lang.perl Thu Feb 17 13:29:17 1994
Newsgroups: comp.lang.perl
Path: ruuinf!sun4nl!EU.net!Germany.EU.net!netmbx.de!zrz.TU-Berlin.DE!zib-berlin.de!math.fu-berlin.de!MathWorks.Com!europa.eng.gtefsd.com!wx.gtegsc.com!news.cerf.net!netlabs!lwall
From: lwall@netlabs.com (Larry Wall)
Subject: Re: Perl 5 Alpha 6 available
Message-ID: <1994Feb16.225948.17034@netlabs.com>
Organization: NetLabs, Inc.
References: <1994Feb16.222546.16901@netlabs.com>
Date: Wed, 16 Feb 1994 22:59:48 GMT
Lines: 7

Hal Pomeranz has the honor of drawing first blood.

If you want to recompile ext/dl/dl.c, you have to translate any occurrences
of the variable "sp" to "ax" instead.  Don't know how that slipped past
the QA folks...  :-)

Larry

From comp.lang.perl Fri Feb 18 13:34:50 1994
Newsgroups: comp.lang.perl
Path: ruuinf!sun4nl!EU.net!howland.reston.ans.net!usc!news.cerf.net!netlabs!lwall
From: lwall@netlabs.com (Larry Wall)
Subject: Re: Perl 5 Alpha 6 available
Message-ID: <1994Feb17.193727.18394@netlabs.com>
Organization: NetLabs, Inc.
References: <1994Feb16.222546.16901@netlabs.com> <1994Feb16.225948.17034@netlabs.com>
Date: Thu, 17 Feb 1994 19:37:27 GMT
Lines: 32

In article <1994Feb16.225948.17034@netlabs.com> lwall@netlabs.com (Larry Wall) writes:
: Hal Pomeranz has the honor of drawing first blood.

Dang.  Drew second blood myself.  You can't put a label as the first
statement inside a block.  Blew my news clipper out of the water.
Here's a patch.  (A workaround is to put a statement before the label.)

*** /scalpel/lwall/perl5alpha6/toke.c	Tue Feb 15 16:27:34 1994
--- toke.c	Thu Feb 17 11:13:27 1994
***************
*** 1398,1405 ****
  	if (expect == XTERM)
  	    OPERATOR(HASHBRACK);
  	else if (expect == XBLOCK || expect == XOPERATOR) {
! 	    lex_brackstack[lex_brackets-1] = XBLOCK;
! 	    expect = XBLOCK;
  	}
  	else {
  	    char *t;
--- 1398,1405 ----
  	if (expect == XTERM)
  	    OPERATOR(HASHBRACK);
  	else if (expect == XBLOCK || expect == XOPERATOR) {
! 	    lex_brackstack[lex_brackets-1] = XSTATE;
! 	    expect = XSTATE;
  	}
  	else {
  	    char *t;

Remember, if you recompile you have to change sp to ax in ext/dl/dl.c too.

Larry

<clipped from comp.lang.perl>

Tony Sanders has discovered that under certain circumstances, undef
can become defined in Alpha 6.  If you run into this problem, recompile
sv.c with -DTOOSTRICT, which, unfortunately, is not too strict, but
just strict enough...

If this keeps up there will be an Alpha 7 pretty soon.  Lucky us.

Larry

