$daten = eval $gedumpter_string;
2013-02-27T07:18:44 Muffi[EDIT] Achja, damit das funktioniert beim Dumpen $Data::Dumper::Terse auf 1 setzen
Quote· $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".
1 2 3 4
my $a = Data::Dumper->new([{ 1 => 2 }])->Dump; say $a; $b = eval $a; say $b;
1
2
3
4
5
$VAR1 = {
'1' => 2
};
Use of uninitialized value $b in say at c:\work\P\index.pl line 35.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
my $ddump = Data::Dumper->new( [ { foo => 1, bar => 2 } ], # data [ '*foobar' ], # "variable name" of data )->Dump(); say $ddump; my %foobar; # hash with name as defined as "variable name" eval $ddump; say Data::Dumper->new( [ \%foobar ], [ '*clone' ], )->Dump();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
use Data::Dumper; # erhält Daten des Hashes my $hash; { # Einlesemodus auf Einlesen in einem Rutsch local $/ = undef; open (my $fh, '<', 'meinedaten.dat') or die "Datei konnte nicht geöffnet werden: $!"; # Zeichenkette einlesen $hash = <$fh>; # Variablenbezeichnung des gedumpten Hashstrings auf $hash setzen $hash =~ s|VAR1|hash|; # Datei schließen close($fh) or die "Datei konnte nicht geschlossen werden: $!"; } # Code in $hash ausführen eval("$hash") or die 'Hash $hash konnte nicht ausgewertet werden'; # alle Schlüssel des Hashes als HTML-Schnippsel ausgeben for my $key (keys %$hash) { print <<HTML; <p>$key: <i>$hash->{$key}</i></p> HTML }
1
2
3
4
5
$VAR1 = {
'Artikel-ID' => '0815',
'Artikelbezeichnung' => 'Blahboo',
'Artikelpreis' => '1024'
};
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
use HTML::Template::Compiled; # erhält Daten des Hashes my $hash; { # Einlesemodus auf Einlesen in einem Rutsch local $/ = undef; open (my $fh, '<', 'meinedaten.dat') or die "Datei konnte nicht geöffnet werden: $!"; # Zeichenkette einlesen $hash = <$fh>; # Variablenbezeichnung des gedumpten Hashstrings auf $hash setzen $hash =~ s|VAR1|hash|; # Datei schließen close($fh) or die "Datei konnte nicht geschlossen werden: $!"; } # Code in $hash ausführen eval("$hash") or die 'Hash $hash konnte nicht ausgewertet werden'; # das ist das HTML-Template für Ausgabe my $template = <<'HTML'; <html> <head> </head> <body> <table> <th> <td>Datum</td> <td>Wert</td> </th> <%each data%> <tr> <td><%= __key__ %></td> <td><%= __value__ %></td> </tr> <%/each%> </table> </body> </html> HTML my $htc = HTML::Template::Compiled->new( scalarref => \$template, debug => 0, loop_context_vars => 1, ); # Daten für Templateengine $htc->param(data => $hash); print $htc->output();
1
2
3
4
5
6
7
$VAR1 = {
'Artikel-ID' => {
'Artikelbezeichnung' => {
'Artikelpreis' => '1024'
}
}
}
1
2
3
my $hash = do ('Dumper.xml')
or die "Die Datei konnte nicht geöffnet werden!";
print Dumper($hash);
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $file='Dumper.xml'; # <= ist aber keine XML Datei! my $data=load_dump($file); print Dumper($data); sub load_dump { my $file=shift; return do($file); }