From: Moritz Bunkus Date: Wed, 19 Sep 2007 14:20:37 +0000 (+0000) Subject: Das Modul "Data::Dumper" hat die Eigenheit, dass es den Iterator von gedumpten Hashes... X-Git-Tag: release-2.6.0beta1~492 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=d87c3bf791e5222ee0d1ef2d23689ac9dffe63a5;p=kivitendo-erp.git Das Modul "Data::Dumper" hat die Eigenheit, dass es den Iterator von gedumpten Hashes nicht zurücksetzt bzw. ihn nicht bis zum Ende ausliest, wenn "Sortkeys" wahr ist. Das hat zur Folge, dass der folgende Aufrufe von "each" für dieses Hash sofort beendet wird. Also muss der Iterator manuell zurückgesetzt werden. Siehe auch die Diskussion in "perldoc -f each". --- diff --git a/SL/LXDebug.pm b/SL/LXDebug.pm index 6a8ca5af5..185297ba0 100644 --- a/SL/LXDebug.pm +++ b/SL/LXDebug.pm @@ -131,6 +131,14 @@ sub dump { my $dumper = Data::Dumper->new([$variable]); $dumper->Sortkeys(1); $self->message($level, "dumping ${name}:\n" . $dumper->Dump()); + + # Data::Dumper does not reset the iterator belonging to this hash + # if 'Sortkeys' is true. Therefore clear the iterator manually. + # See "perldoc -f each". + if ($variable && ('HASH' eq ref $variable)) { + keys %{ $variable }; + } + } else { $self->message($level, "dumping ${name}: Data::Dumper not available; "