[30492] in Perl-Users-Digest
Perl-Users Digest, Issue: 1735 Volume: 11
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Mon Jul 21 03:09:41 2008
Date: Mon, 21 Jul 2008 00:09:06 -0700 (PDT)
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)
Perl-Users Digest Mon, 21 Jul 2008 Volume: 11 Number: 1735
Today's topics:
Re: comma puzzle <nick@maproom.co.uk>
Re: comma puzzle <ben@morrow.me.uk>
Re: comma puzzle xhoster@gmail.com
Re: how to change the effective UID <rtfm.rtfm.rtfm@gmail.com>
Re: how to change the effective UID <spamtrap@dot-app.org>
Re: how to change the effective UID <fawaka@gmail.com>
Re: how to change the effective user identficator <rtfm.rtfm.rtfm@gmail.com>
Re: how to change the effective user identficator <spamtrap@dot-app.org>
Re: how to create a hash whose key is a reference xhoster@gmail.com
Re: How to identify a 32 or 64 bit OS? <nospam-abuse@ilyaz.org>
Languages that don't suck after Perl? <reply_in_group@mouse-potato.com>
new CPAN modules on Mon Jul 21 2008 (Randal Schwartz)
Re: sha1 -- core <ben@morrow.me.uk>
Re: The Importance of Terminology's Quality <jwkenne@attglobal.net>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: Sun, 20 Jul 2008 22:22:49 +0100
From: Nick Wedd <nick@maproom.co.uk>
Subject: Re: comma puzzle
Message-Id: <U5Ehinqpy6gIFALy@maproom.demon.co.uk>
In message <slrng86i28.chm.tadmc@tadmc30.sbcglobal.net>, Tad J McClellan
<tadmc@seesig.invalid> writes
< snip >
>> it writes "111".
>
>
>it outputs "000" when I run it:
>
> perl -e 'for ( my $i=0 , $i<10 , $i++ ) { print $i; }'
>
>> Why?
>
>
>I do not know why it would output "111", since I cannot make perl do that...
>
>Unless your code was:
>
> perl -e 'for ( my $i=1 , $i<10 , $i++ ) { print $i; }'
>
>...?
Ahh. I was wrong. My program actually read
my $i;
for ( $i=0 , $i<10 , $i++ ) { print $i; }
>
>
>> I understand that $i will have the value 1 when
>> I print it.
>
>
>There are *two* variables named $i in your code.
>
>"my $i=1" and "print $i" refer to the lexical variable named $i.
>
>"$i<10" and "$i++" refer to the package variable named $i (ie. $main::i).
I see. I have been in the habit of writing things like
for ( my $suit=0 ; $suit<4 ; $suit++ )
and assuming they did the same as
my $i;
for ( $suit=0 ; $suit<4 ; $suit++ )
Generally they have behaved as I intended. But now I see that I have
been lucky. I guess I was copying the C style:
for ( int suit=0 ; suit<4 ; suit++ )
in which the variable declared is the same as the one compared and
incremented (though Microsoft and the C standard have different opinions
about when it should cease to exist again).
Nick
--
Nick Wedd nick@maproom.co.uk
------------------------------
Date: Sun, 20 Jul 2008 23:45:04 +0100
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: comma puzzle
Message-Id: <gorcl5-iq21.ln1@osiris.mauzo.dyndns.org>
Quoth Nick Wedd <nick@maproom.co.uk>:
> In message <slrng86i28.chm.tadmc@tadmc30.sbcglobal.net>, Tad J McClellan
> <tadmc@seesig.invalid> writes
> >
> >There are *two* variables named $i in your code.
> >
> >"my $i=1" and "print $i" refer to the lexical variable named $i.
> >
> >"$i<10" and "$i++" refer to the package variable named $i (ie. $main::i).
>
> I see. I have been in the habit of writing things like
>
> for ( my $suit=0 ; $suit<4 ; $suit++ )
>
> and assuming they did the same as
>
> my $i;
> for ( $suit=0 ; $suit<4 ; $suit++ )
This is not the case Tad was talking about. The semicolons make the
three parts of a C-style for loop separate statements, so the 'my $i'
introduced by the first is available in the others. It's only the
Perl-style loop (with commas, so the whole list is a single statement)
that will use a variable from an outer scope.
Your first example is better than your second. In the first, the
variable $i is scoped to (all iterations of) the for loop; in the
second, $i is still visible after the loop is over. The first is more
like
{
my $suit = 0;
for ($suit = 0; $suit < 4; $suit++) {
...
}
}
except Perl doesn't actually have to create an extra block. Since it's
always better to keep a variable's scope as small as possible, the first
should be preferred when you don't need to get at the index outside the
loop.
Better still would be
for my $suit (0..3) { ... }
since it's much clearer to see which values the index will be iterating
over.
Ben
--
For far more marvellous is the truth than any artists of the past imagined!
Why do the poets of the present not speak of it? What men are poets who can
speak of Jupiter if he were like a man, but if he is an immense spinning
sphere of methane and ammonia must be silent? [Feynmann] ben@morrow.me.uk
------------------------------
Date: 20 Jul 2008 23:43:04 GMT
From: xhoster@gmail.com
Subject: Re: comma puzzle
Message-Id: <20080720194305.759$GD@newsreader.com>
Nick Wedd <nick@maproom.co.uk> wrote:
> In message <slrng86i28.chm.tadmc@tadmc30.sbcglobal.net>, Tad J McClellan
> <tadmc@seesig.invalid> writes
>
> >
> >There are *two* variables named $i in your code.
> >
> >"my $i=1" and "print $i" refer to the lexical variable named $i.
> >
> >"$i<10" and "$i++" refer to the package variable named $i (ie.
> >$main::i).
>
> I see. I have been in the habit of writing things like
>
> for ( my $suit=0 ; $suit<4 ; $suit++ )
>
> and assuming they did the same as
>
> my $i;
> for ( $suit=0 ; $suit<4 ; $suit++ )
They will be different in that in the first one, $i goes out of
scope after the loop, while in the second one it doesn't. So which
one to use depends on whether you want to access $i after the loop
is done (for example, if the loop can end with a "last", and afterwards you
want to know what value of $i triggered this termination.
> Generally they have behaved as I intended. But now I see that I have
> been lucky. I guess I was copying the C style:
>
> for ( int suit=0 ; suit<4 ; suit++ )
>
> in which the variable declared is the same as the one compared and
> incremented
When you properly use ';', then Perl uses the same one as well. Only
when you improperly use ',', does it access different variables. (And if
you used strict, it would probably have notified you of this.)
The variable declared by my isn't ready for separate use until the next
statement. ";" is a statement separator, "," is not.
Xho
--
-------------------- http://NewsReader.Com/ --------------------
The costs of publication of this article were defrayed in part by the
payment of page charges. This article must therefore be hereby marked
advertisement in accordance with 18 U.S.C. Section 1734 solely to indicate
this fact.
------------------------------
Date: Sun, 20 Jul 2008 23:51:25 +0400
From: Daneel Yaitskov <rtfm.rtfm.rtfm@gmail.com>
Subject: Re: how to change the effective UID
Message-Id: <g60524$66s$1@aioe.org>
Leon Timmermans wrote:
> On Sun, 20 Jul 2008 19:07:29 +0400, Daneel Yaitskov wrote:
>
>> Hi,
>>
>>
>> I can't change the EUID of a perl process which performs a perl script.
>> I used the manual perlsec and wrote the script:
>>
>> #!/usr/bin/perl
>> use English;
>>
>> $EUID = 0;
>
> After setting $EUID, you should always check $! (also known as $ERRNO
> when using English) for errors. What does it say?
>
>> open(THEFILE, ">/var/log/messages") || die "can't open file"; print "The
>> file was opened\n";
>
> Here again, you should always include $! in the error string. It will
> tell you why it couldn open the file.
>
> Regards,
>
> Leon Timmermans
I have inserted the line "print "Result: $!\n";" after the line "$EUID =
0;". Trace command has printed "Operation not permitted".
What is CLPM?
------------------------------
Date: Sun, 20 Jul 2008 16:22:52 -0400
From: Sherman Pendley <spamtrap@dot-app.org>
Subject: Re: how to change the effective UID
Message-Id: <m1od4s2tlv.fsf@dot-app.org>
Daneel Yaitskov <rtfm.rtfm.rtfm@gmail.com> writes:
> I can't change the EUID of a perl process which performs a perl script.
> I used the manual perlsec and wrote the script:
>
> #!/usr/bin/perl
> use English;
>
> $EUID = 0;
> open(THEFILE, ">/var/log/messages") || die "can't open file";
> print "The file was opened\n";
> #end of the script
>
> The script file has the rights:
> $chown root:root test.pl
> $chmod a+xs test.pl
Many operating systems don't allow setuid scripts for security
reasons. Have you tried checking the value of $< to see if you're
*really* running as root? Have you tried running your script with sudo
or su, to see if it behaves correctly that way?
sherm--
--
My blog: http://shermspace.blogspot.com
Cocoa programming in Perl: http://camelbones.sourceforge.net
------------------------------
Date: Mon, 21 Jul 2008 00:02:24 +0200
From: Leon Timmermans <fawaka@gmail.com>
Subject: Re: how to change the effective UID
Message-Id: <d195c$4883b5f0$89e0e08f$8714@news2.tudelft.nl>
On Sun, 20 Jul 2008 23:51:25 +0400, Daneel Yaitskov wrote:
>
> I have inserted the line "print "Result: $!\n";" after the line "$EUID =
> 0;". Trace command has printed "Operation not permitted".
In that case the problem seems to be that you're not running as root. For
confirmation you can print out the UID values before trying to change it,
but probably you just can't run shell scripts with suid.
> What is CLPM?
This newsgroup (comp.lang.perl.misc).
------------------------------
Date: Sun, 20 Jul 2008 23:45:12 +0400
From: Daneel Yaitskov <rtfm.rtfm.rtfm@gmail.com>
Subject: Re: how to change the effective user identficator
Message-Id: <g604mg$4t6$1@aioe.org>
Jürgen Exner wrote:
> [Forwarding to CLPM because CLP is obsolete]
I don't know what is CLPM. I didn't find definition of CLPM or CLP in
manuals: perl, perltoc and perldoc CLPM. Please, hint where can I read
about it.
Daneel
------------------------------
Date: Sun, 20 Jul 2008 16:07:21 -0400
From: Sherman Pendley <spamtrap@dot-app.org>
Subject: Re: how to change the effective user identficator
Message-Id: <m1y73w2ubq.fsf@dot-app.org>
Daneel Yaitskov <rtfm.rtfm.rtfm@gmail.com> writes:
> Jürgen Exner wrote:
>> [Forwarding to CLPM because CLP is obsolete]
>
> I don't know what is CLPM.
This group - comp.lang.perl.misc. The comp.lang.perl group is
obsolete. It was split into sub-groups (c.l.p.announce, c.l.p.misc,
c.l.p.modules, etc.) many years ago.
sherm--
--
My blog: http://shermspace.blogspot.com
Cocoa programming in Perl: http://camelbones.sourceforge.net
------------------------------
Date: 20 Jul 2008 20:54:58 GMT
From: xhoster@gmail.com
Subject: Re: how to create a hash whose key is a reference
Message-Id: <20080720165458.284$Gl@newsreader.com>
"freesoft12@gmail.com" <freesoft12@gmail.com> wrote:
> Hi,
>
> I am creating 2 hash tables. In the first hash table I have a string
> as the key but in the second one I want the reference to that string
> as the key, to save memory.
> ie.
> $hash_table_one[$string_key]
> ^
> |
> $hash_table_two[$string_key_ref] -> this key is a reference to the
> first table's key
Other people who have answered this took you too literally. You do want
a "Perl reference", which is what they answered, you want a conceptual
reference. And lucky for you, Perl does this for you automatically.
perl -le '$x.=rand() foreach 1..3e6; \
print +(`ps -p $$ -o rss `)[1];'
51332
perl -le '$x.=rand() foreach 1..3e6; $h{$x}=1; \
print +(`ps -p $$ -o rss `)[1];'
101164
perl -le '$x.=rand() foreach 1..3e6; $h{$x}=1; $h2{$x}=1; \
print +(`ps -p $$ -o rss `)[1];'
101156
The third example uses no additional memory over the second.
Xho
--
-------------------- http://NewsReader.Com/ --------------------
The costs of publication of this article were defrayed in part by the
payment of page charges. This article must therefore be hereby marked
advertisement in accordance with 18 U.S.C. Section 1734 solely to indicate
this fact.
------------------------------
Date: Mon, 21 Jul 2008 01:58:08 +0000 (UTC)
From: Ilya Zakharevich <nospam-abuse@ilyaz.org>
Subject: Re: How to identify a 32 or 64 bit OS?
Message-Id: <g60qfg$kvv$1@agate.berkeley.edu>
[A complimentary Cc of this posting was sent to
sisyphus
<sisyphus359@gmail.com>], who wrote in article <6de96735-4e00-43e3-8433-02f8c9d0651b@v21g2000pro.googlegroups.com>:
> Anyway, if those are the conditions for quad operations working, then
> it seems to me that Ilya's patches (or equivalent) have already been
> implemented - since, on a 32-bit OS (linux), I can 'pack "q", 1;' iff
> $Config{ivsize} =3D=3D 8.
No. Obviously, which processor opcodes the kernel uses is not
relevant to the discussion, so the question of 32bit OS vs 64bit OS is
orthogonal to the discussion. The question is whether Perl is
compiled with 32bit integers (quick, takes smaller memory footprint)
or with 64bit integers (slower, larger memory).
> And even if $Config{d_longlong} eq 'define', I find that quad
> operations will not work unless $Config{ivsize} =3D=3D 8.
As I said: as expected without my patch.
Hope this helps,
Ilya
------------------------------
Date: Sun, 20 Jul 2008 23:24:03 -0700
From: Tim Smith <reply_in_group@mouse-potato.com>
Subject: Languages that don't suck after Perl?
Message-Id: <reply_in_group-3CF9D1.23240320072008@news.supernews.com>
I've been mostly programming in Perl for several years. Not fancy Perl.
Just keeping it simple, so that any maintenance programmer that comes
after me will only need to be an intermediate Perl programmer to
understand the code.
I've found that as I've spent more time in Perl, my tolerance for other
languages has gone down. I keep finding myself muttering "why is this
stupid language making me go through so much work just make a simple
data structure that I only will need for a few lines?" or "why is it so
damned hard in this language to take this hash of names and values and
turn it into an SQL insert statement to store these values in my table?".
Java seems particularly annoying after Perl, if I'm trying to do any
text processing or database work.
Has anyone else noticed this? If so, what languages have you found are
not annoying after Perl?
--
--Tim Smith
------------------------------
Date: Mon, 21 Jul 2008 04:42:20 GMT
From: merlyn@stonehenge.com (Randal Schwartz)
Subject: new CPAN modules on Mon Jul 21 2008
Message-Id: <K4CAEK.y85@zorch.sf-bay.org>
The following modules have recently been added to or updated in the
Comprehensive Perl Archive Network (CPAN). You can install them using the
instructions in the 'perlmodinstall' page included with your Perl
distribution.
AnyEvent-4.22
http://search.cpan.org/~mlehmann/AnyEvent-4.22/
provide framework for multiple event loops
----
App-Daemon-0.01
http://search.cpan.org/~mschilli/App-Daemon-0.01/
Start an Application as a Daemon
----
Bundle-COG-0.06
http://search.cpan.org/~cog/Bundle-COG-0.06/
Install all modules by COG
----
Bundle-DBD-PO-0.01
http://search.cpan.org/~steffenw/Bundle-DBD-PO-0.01/
A bundle to install all DBD::PO related modules
----
Bundle-DBD-PO-0.02
http://search.cpan.org/~steffenw/Bundle-DBD-PO-0.02/
A bundle to install all DBD::PO related modules
----
Bundle-SDK-COG-0.04
http://search.cpan.org/~cog/Bundle-SDK-COG-0.04/
CPAN Bundle for modules COG uses
----
CPANPLUS-YACSmoke-0.02
http://search.cpan.org/~bingos/CPANPLUS-YACSmoke-0.02/
Yet Another CPANPLUS Smoke Tester
----
Catalyst-Runtime-5.7099_03
http://search.cpan.org/~mramberg/Catalyst-Runtime-5.7099_03/
Catalyst Runtime version
----
Chart-Gnuplot-0.03
http://search.cpan.org/~kwmak/Chart-Gnuplot-0.03/
Plot graph using Gnuplot on the fly
----
Class-MethodMaker-2.12
http://search.cpan.org/~schwigon/Class-MethodMaker-2.12/
Create generic methods for OO Perl
----
DBD-PO-0.01
http://search.cpan.org/~steffenw/DBD-PO-0.01/
----
DBD-PO-0.02
http://search.cpan.org/~steffenw/DBD-PO-0.02/
DBI driver for PO files
----
DBIx-Class-FrozenColumns-0.06
http://search.cpan.org/~syber/DBIx-Class-FrozenColumns-0.06/
Store virtual columns inside another column.
----
Data-Rand-0.0.3
http://search.cpan.org/~dmuey/Data-Rand-0.0.3/
Random string and list utility
----
Data-Rlist-1.42
http://search.cpan.org/~aspindler/Data-Rlist-1.42/
----
Devel-DTrace-0.08
http://search.cpan.org/~andya/Devel-DTrace-0.08/
Enable dtrace probes for subroutine entry, exit
----
Devel-FindRef-1.31
http://search.cpan.org/~mlehmann/Devel-FindRef-1.31/
where is that reference to my variable hiding?
----
Exporter-5.63
http://search.cpan.org/~ferreira/Exporter-5.63/
Implements default import method for modules
----
HTML-Obliterate-0.0.2
http://search.cpan.org/~dmuey/HTML-Obliterate-0.0.2/
Perl extension to remove HTML from a string or arrayref of strings.
----
IPC-System-Simple-0.15
http://search.cpan.org/~pjf/IPC-System-Simple-0.15/
Run commands simply, with detailed diagnostics
----
JSON-XS-2.2222
http://search.cpan.org/~mlehmann/JSON-XS-2.2222/
JSON serialising/deserialising, done correctly and fast
----
Log-Log4perl-1.17
http://search.cpan.org/~mschilli/Log-Log4perl-1.17/
Log4j implementation for Perl
----
Module-Install-GetProgramLocations-0.3003
http://search.cpan.org/~dcoppit/Module-Install-GetProgramLocations-0.3003/
A Module::Install extension that allows the user to interactively specify the location of programs needed by the module to be installed
----
PDL-Fit-Levmar-0.0087
http://search.cpan.org/~jlapeyre/PDL-Fit-Levmar-0.0087/
Levenberg-Marquardt fit/optimization routines
----
POE-Component-CPAN-Reporter-0.02
http://search.cpan.org/~bingos/POE-Component-CPAN-Reporter-0.02/
Bringing the power of POE to CPAN smoke testing.
----
Parallel-MapReduce-0.05
http://search.cpan.org/~drrho/Parallel-MapReduce-0.05/
MapReduce Infrastructure, multithreaded
----
Pugs-Compiler-Rule-0.30
http://search.cpan.org/~fglock/Pugs-Compiler-Rule-0.30/
Compiler for Perl 6 regexes
----
Pugs-Compiler-Rule-0.31
http://search.cpan.org/~fglock/Pugs-Compiler-Rule-0.31/
Compiler for Perl 6 regexes
----
Pugs-Compiler-Rule-0.32
http://search.cpan.org/~fglock/Pugs-Compiler-Rule-0.32/
Compiler for Perl 6 regexes
----
Set-Infinite-0.62
http://search.cpan.org/~fglock/Set-Infinite-0.62/
Sets of intervals
----
SmartMatch-Sugar-0.04
http://search.cpan.org/~nuffin/SmartMatch-Sugar-0.04/
Smart match friendly tests.
----
XML-MiniCity-0.01
http://search.cpan.org/~jkramer/XML-MiniCity-0.01/
----
v6-0.022
http://search.cpan.org/~fglock/v6-0.022/
An experimental Perl 6 implementation
If you're an author of one of these modules, please submit a detailed
announcement to comp.lang.perl.announce, and we'll pass it along.
This message was generated by a Perl program described in my Linux
Magazine column, which can be found on-line (along with more than
200 other freely available past column articles) at
http://www.stonehenge.com/merlyn/LinuxMag/col82.html
print "Just another Perl hacker," # the original
--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
See http://methodsandmessages.vox.com/ for Smalltalk and Seaside discussion
------------------------------
Date: Sun, 20 Jul 2008 23:50:39 +0100
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: sha1 -- core
Message-Id: <v2scl5-iq21.ln1@osiris.mauzo.dyndns.org>
Quoth viki <vikimun@gmail.com>:
> Is there decent digest (like sha1) in core perl ?
What do you mean by 'core perl'? There's no builtin, but Digest::SHA is
a core module (supplied with perl) as of 5.10.0, and can be installed
from CPAN for earlier versions. Digest::MD5 has been core since 5.8.0 (I
don't know whether you consider MD5 a 'decent digest' nowadays: it
depends on what you're using it for).
There is a crypt builtin, of course, but I doubt that's what you meant
:).
> Can par embed modules that have .c components ?
Yes.
Ben
--
"If a book is worth reading when you are six, * ben@morrow.me.uk
it is worth reading when you are sixty." [C.S.Lewis]
------------------------------
Date: Sun, 20 Jul 2008 18:29:25 -0400
From: John W Kennedy <jwkenne@attglobal.net>
Subject: Re: The Importance of Terminology's Quality
Message-Id: <4883bc90$0$7327$607ed4bc@cv.net>
Robert Maas, http://tinyurl.com/uh3t wrote:
>>>> ... the "thunks" were necessary at the machine-language level to
>>>> /implement/ ALGOL 60, but they could not be expressed /in/ ALGOL.
>>> Ah, thanks for the clarification. Is that info in the appropriate
>>> WikiPedia page? If not, maybe you would edit it in?
>> From: John W Kennedy <jwke...@attglobal.net>
>> It is explained s.v. "thunk", which is referenced from "ALGOL
>> 60". The ALGOL "pass-by-name" argument/parameter matching was
>> perhaps the most extreme example ever of a language feature that
>> was "elegant" but insane. What it meant, in effect, was that,
>> unless otherwise marked, every argument was passed as two closures,
>> one that returned a fresh evaluation of the expression given as the
>> argument, which was called every time the parameter was read, and
>> one that set the argument to a new value, which was called every
>> time the parameter was set.
>
> Wow! All these years when I occasionally heard of a "thunk" I never
> was told, until now, what it really meant. Thanks for the info!!
>
> Followup question #1: I assume these are lexical closures in the
> environment of the point of the call, right?
Yes. (Actually, subprogram calls are first described as working like
macro expansions, but then the specification adds that there must be
magic fixups so that variable names are resolved in point-of-call
context anyway.)
At this point in the history of computing, the conceptual distinction
between subprograms and macros was not at all clear. It was quite
possible to have "macros" that generated an out-of-line subprogram once
and then generated calling code the first time and every time thereafter
(it was a way of life on systems without linkage editors or linking
loaders), and it was also quite possible to refer to in-line macro
expansions as "subprograms". I suspect that the triumph of FORTRAN may
have had something to do with cleaning up the terminological mess by the
mid-60s.
Into the 60s, indeed, there were still machines being made that had no
instruction comparable to the mainframe BASx/BALx family, or to Intel's
CALL. You had to do a subprogram call by first overwriting the last
instruction of what you were calling with a branch instruction that
would return back to you.
> Followup question #2: For simple arithmetic expressions, I can
> possibly understand how the UPDATE closure might be implemeted
> (expressed in Lisp to make the intent clear):
> Call form: MyFunction(X+2);
> GET closure: (+ closedX 2)
> UPDATE closure: (lambda (newval) (setf closedX (- newval 2))
> Thus from inside MyFunction where formal parameter Arg1 is bound
> to actual parameter X+2, after doing Arg1 := 7; X will have the
> value 5 so that calling Arg1 will return 7 as expected, right?
> But if the actual argument is something complicated, especially if
> it makes a nested function call, how can that possibly be
> implemented?
It was forbidden. In the formal definition of ALGOL 60, there was no
such thing as an external subprogram (except for non-ALGOL code, which
was treated as magic), so the whole program was supposed to be one
compile. Therefore, a theoretical compiler could verify that any
parameter used as an LHS was always matched with an argument that was a
variable. (However, a "thunk" was still required to evaluate any array
index and, possibly, to convert between REAL and INTEGER variables.)
Many actual compilers /did/ support separate complication as a language
extension -- I suppose they had to use run-time checking.
--
John W. Kennedy
"Compact is becoming contract,
Man only earns and pays."
-- Charles Williams. "Bors to Elayne: On the King's Coins"
------------------------------
Date: 6 Apr 2001 21:33:47 GMT (Last modified)
From: Perl-Users-Request@ruby.oce.orst.edu (Perl-Users-Digest Admin)
Subject: Digest Administrivia (Last modified: 6 Apr 01)
Message-Id: <null>
Administrivia:
#The Perl-Users Digest is a retransmission of the USENET newsgroup
#comp.lang.perl.misc. For subscription or unsubscription requests, send
#the single line:
#
# subscribe perl-users
#or:
# unsubscribe perl-users
#
#to almanac@ruby.oce.orst.edu.
NOTE: due to the current flood of worm email banging on ruby, the smtp
server on ruby has been shut off until further notice.
To submit articles to comp.lang.perl.announce, send your article to
clpa@perl.com.
#To request back copies (available for a week or so), send your request
#to almanac@ruby.oce.orst.edu with the command "send perl-users x.y",
#where x is the volume number and y is the issue number.
#For other requests pertaining to the digest, send mail to
#perl-users-request@ruby.oce.orst.edu. Do not waste your time or mine
#sending perl questions to the -request address, I don't have time to
#answer them even if I did know the answer.
------------------------------
End of Perl-Users Digest V11 Issue 1735
***************************************