Data::Dumper: auto reference
Jiri Polcar
polcar na physics.muni.cz
Pátek Květen 23 09:48:32 CEST 2008
Ciao,
narazil jsem na jednu zahadu pri pouzit funkce Dumper z modulu
Data::Dumper:
use Data::Dumper;
$pole = [ qw(jedna dve tri) ];
$struct = { 'key1' => $pole, 'key2' => $pole };
print Dumper( $struct );
vrati:
$VAR1 = {
'key2' => [
'jedna',
'dve',
'tri'
],
'key1' => $VAR1->{'key2'}
};
coz je v poradku. Kdyz ale nastavim:
$Data::Dumper::Terse = 1;
dostanu na vystupu:
{
'key2' => [
'jedna',
'dve',
'tri'
],
'key1' => $VAR1->{'key2'}
}
Coz uz samozrejmne nesezere eval, protoze $VAR1 neexistuje. Pred timto
varuje u dokumentace:
? $Data::Dumper::Terse or $OBJ->Terse([NEWVAL])
When set, Data::Dumper will emit single, non-self-referential
values as atoms/terms rather than statements. This means that the
$VARn names will be avoided where possible, but be advised that
such output may not always be parseable by "eval".
Ale zaroven vystup neni non-self-referential. Otazka zni, jak prinutim
Dumper, aby ve vytupu nepouzival $VARn.
S pozdravem,
Jiri
Další informace o konferenci Perl