-----Original Message-----
From: Frank Wesemann
Sent: Thursday, 20 April 2006 8:03 AM
Subject: Hashes in %udat [snip]
Repeatedly changing the values is reflected in the respective
pages but
they never see the values from the other page.

I found a workaround in changing something in the first Level
of %udat.
If I add a $udat{'ptime'} = time() in the pages, than they
both see the
other values too. So they both print:

"$VAR1 = {
'lists' => {
'list1' => { 'key1' => 'something',
'key2' => 'someotherthing' }

Am I missing something
Is this a bug?
No - its expected behaviour when you know why to expect it :) This is
something that really should
be documented explicitly in the Embperl docs as it catches a few people!

Gerald, any chance of getting a quick sentence to that effect in the
%udat description?

Think of it this way: If you do $hash{key1}{key2}++ are you updating any
element of %hash? No, you are updating the hash pointed to by the
reference in $hash{key1}. The reference is still the same so a shallow
check of %hash means no changes are detected.

The most common fix is, as you've already done, to update a timestamp or
simply increment a top-level counter or similar.

%udat is essentially a tied hash via Apache::Session. From the Apache
session docs

Note that Apache::Session does only a shallow check to see if anything
has changed. If nothing changes in the top level tied hash, the data
will not be updated in the backing store. You are encouraged to
timestamp the session hash so that it is sure to be updated.

Hope that explains what you've experienced.



To unsubscribe, e-mail: embperl-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-help@perl.apache.org

Search Discussions

Discussion Posts


Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 2 of 2 | next ›
Discussion Overview
groupembperl @
categoriesmodperl, perl
postedApr 19, '06 at 10:03p
activeApr 19, '06 at 11:47p

2 users in discussion

Andrew O'Brien: 1 post Frank Wesemann: 1 post



site design / logo © 2022 Grokbase