Hallo ahe,
Erfolgsmeldung 
also mit
my $olddata = ssp::cart_read_var('ajax_serialize');
if (length($olddata) && ($olddata ne $ssp::undefined)) {
$SETTINGS = serialize::unserialize($olddata);
}
hab ich's nicht hingekriegt

Wenn ich mir zum testen $SETTINGS mit main::mprint ausgegeben habe, ist sowas (mit wechselndem Code in der Klammer) rausgekommen
HASH(0x1ef82dc)
und damit nix gespeichert sondern alle Werte gelöscht worden
aber mit Ihrem Hinweis hab ich dann nach "Schleifen mit Hashes" gesucht und die Lösung gefunden;
<!--spmacro:module(ajaxconfig)
push(@INC,'ajax');
require "JSON.pm";
use serialize;
my %SETTINGS = ();
my $datastr = ssp::cart_read_var('ajax_serialize');
my $tmp = serialize::unserialize($datastr);
%daten = %$tmp;
print "Content-Type: text/plain;charset=ISO-8859-1\n\n";
#use utf8;
my $pCall = JSON::jsonToObj($main::input);
my %result;
$result{_call} = $pCall;
if ($pCall->{method} eq 'ajaxconfig1') {
...
...
if ($pCall->{method} eq 'ajaxconfig2') { my $olddata = ssp::cart_read_var('ajax_serialize');
if (length($olddata) && ($olddata ne $ssp::undefined)) {
my $tmp2 = serialize::unserialize($olddata);
%daten2 = %$tmp2;
my $x;
my $y;
while (($x, $y) = each(%daten2)) {
$SETTINGS{$x} = $y;
}
} my $artikel = $daten{artikel};
...
...
div Daten auslesen, db-Abfragen, Bedingungen
my $w_schritt = $pCall->{params}[2];
...
if ($w_schritt == "1 bis x") {
...
}
usw, etc,
bis Zeile 641
ssp::cart_write_var('ajax_serialize', serialize::serialize(\%SETTINGS));
}
print JSON::objToJson(\%result);
exit 0; (hat etwas länger gedauert, aber jetzt funktioniert's

)
und jetzt kann ich auch mit
<!--spmacro:module(ajaxvari)
sub loeschen {
ssp::cart_write_var('ajax_serialize', "");
}
-->
alle Werte (egal wieviele gerade im Carteintrag stehen) bequem löschen.
Danke nochmal