On Thu, Nov 07, 2002 at 04:16:50PM -0500, Dan Sugalski wrote:
> Basically anything you can potentially find in a symbol table or
> lexical scratchpad will potentially be able to have a property
> attached to it. The only way that we'll be able to reasonably
> restrict (and optimize) the use of low-level data types is to keep
> them out of the symbol tables, which then makes using them in string
> evals and suchlike things somewhat problematic. (And not allowing
> properties on them will require us to throw runtime errors) It'll
> also make passing them in as parameters interesting, as we'd then
> need to construct temporary full variables that held them, which'd be
> somewhat interesting to deal with.
But surely there should be no problem passing things as parameters - with a
bit of mundane magic even taking reference to a bit should work quite nicely.
After all, perl5 can already handle the idea of not autovivifying hash lookups
passed as subroutine parameters, and assigning to substrings and substring
references:
#!/usr/local/bin/perl -w
use strict;
use Devel::Peek;
sub rrrrrroll {
Dump $_[0];
$_[0] x= 6;
}
sub rrrroll {
Dump $_[0];
${$_[0]} x= 4;
}
$a = "Mordor";
rrrrrroll (substr ($a, 2, 1));
print "'$a'\n";
rrrroll (\substr ($a, -1));
print "'$a'\n";
__END__
SV = PVLV(0x1138c0) at 0x1332e8
REFCNT = 1
FLAGS = (PADMY,GMG,SMG,pPOK)
IV = 0
NV = 0
PV = 0x133d98 "r"\0
CUR = 1
LEN = 2
MAGIC = 0x10e8f0
MG_VIRTUAL = &PL_vtbl_substr
MG_TYPE = PERL_MAGIC_substr(x)
TYPE = x
TARGOFF = 2
TARGLEN = 1
TARG = 0x132f10
SV = PV(0xf4580) at 0x132f10
REFCNT = 2
FLAGS = (POK,pPOK)
PV = 0x10c398 "Mordor"\0
CUR = 6
LEN = 7
'Morrrrrrdor'
SV = RV(0x11dee8) at 0xf4284
REFCNT = 1
FLAGS = (ROK)
RV = 0x13336c
SV = PVLV(0x1138f0) at 0x13336c
REFCNT = 2
FLAGS = (PADMY,GMG,SMG,pPOK)
IV = 0
NV = 0
PV = 0x1137e0 "r"\0
CUR = 1
LEN = 2
MAGIC = 0x10e060
MG_VIRTUAL = &PL_vtbl_substr
MG_TYPE = PERL_MAGIC_substr(x)
TYPE = x
TARGOFF = 10
TARGLEN = 1
TARG = 0x132f10
SV = PV(0xf4580) at 0x132f10
REFCNT = 3
FLAGS = (POK,pPOK)
PV = 0x10c398 "Morrrrrrdor"\0
CUR = 11
LEN = 12
'Morrrrrrdorrrr'
Nicholas Clark
--
INTERCAL better than perl? http://www.perl.org/advocacy/spoofathon/