Stas Bekman <[EMAIL PROTECTED]> writes:
I'd hate to take the joy of adding these wonderful features away from Philippe, who's now busy wrestling with mod_perl 1.28 release, but once done will certainly love to do those. Right Philippe?
Curiosity got the better of me. Here's a patch that seems to work (all tests pass), but it sure ain't pretty. Hopefully
it'll help once Philippe gets some free tuits.
;)
+ my $c = 0;
+ while (my($a, $b) = each %$table) {
+ ok $a eq 'foo';
+ ok $b eq $array[$c];
+ ok not defined $table->{'bar'};
+ $c++;
+ }
that reads much better to my idiomatic brain than the scary:
for (1..X) {
my($a, $b) = each %$table;
...
}as it was in your original patch ;)
+ /* XXX: really nasty hack: set the numeric value of the key
+ * to represent a pointer to the corresponding val.
+ * We mark SvEND with another copy of the val's address
+ * as a means of confirming SvIVX really repesents a + * pointer.
+ */
+ SvUPGRADE(sv, SVt_PVIV);
+ SvGROW(sv, len + 3*sizeof(IV) + 1);
+ memcpy(SvPVX(sv), e->key, len);
+ SvCUR_set(sv, len);
+ SvEND(sv)[0] = 0;
+ SvIVX(sv) = (IV) e->val;
+ ((IV *)SvEND(sv))[1] = SvIVX(sv) = (IV) e->val;
+ SvPOK_on(sv);
+ SvIOK_on(sv);
what happens if the key is used in a numeric context? won't this scheme blow? Probably the only safe way to do that is to attach magic :(
__________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
