It works with the string, but it doesn't work with the array element. I'd like to get the updated array element when dereferencing.
This example is simplified. The original problem is a referenced variable for a Tk Checkbutton where the referent get's updated by another subroutine, but the reference still shows the old value.
I don't want to update the data through the reference as it's a more complex structure which makes it much easier to asign a whole new array instead of looping through it and update each single element.

Help, ideas, .. are greatly appreciated as I couldn't find anything suitable in the net or I'm looking for the wrong phrases. ;

The point is, that I don't want to renew the reference. I'm using this kind of reference for Tk-Checkbuttons and I'd have to recreate all of them (and there a quite a few).

I thought, that a reference points to a place in your memory and doesn't care what's written in there. But it looks like I can't replace that piece of data by modifying the original array. Too me it looks a bit odd.

The reference refers to the scalar retrieved via $a[0], not the array index [0]. The reference knows nothing about the array that scalar came from. And the scalar will exist as long as its refcount is > 0.