[perl] Hash Serialisieren

Enigma

Captain Pro
Registriert
Apr. 2004
Beiträge
3.981
Ich arbeite gerade an einem Perl Script, welches Werte an ein anderes Programm übergeben muss.
Gemacht wird dies, indem eine Datenstruktur in serialisierter Form in die Standartausgabe geschrieben wird.

Code:
sub getAll()
{
  my %returnHash = ();
	
  opendir(DIR, $CA) or die "can't opendir $CA: $!";
  while (defined($file = readdir(DIR))) {
      next if $file =~ /^\.\.?$/;
      
      $returnHash{$file} = ();
      $returnHash{$file}{"type"}     = "VPN";
      $returnHash{$file}{"username"} = $file;
      $returnHash{$file}{"status"}   = 0;
      $returnHash{$file}{"comment"}  = "";
      $returnHash{$file}{"cert"}     = "";
      $returnHash{$file}{"certKey"}  = "";
      
      my $commentFile = $CA . "/" . $file . "/comment.txt";
      
      open(my $fh, $commentFile) or die "Datei öffnen nix gut $commentFile";

      read($fh, $returnHash{$file}{"comment"}, 4096);
      
      close($fh);
  }
  closedir(DIR);
  print serialize(%returnHash),
}

Wenn ich den returnHash mit Dumper ausgebe bekomme ich folgende Ausgabe:
Code:
$VAR1 = 'nochEinTest';
$VAR2 = {
          'cert' => '',
          'comment' => 'asd
',
          'status' => 0,
          'type' => 'VPN',
          'certKey' => '',
          'username' => 'nochEinTest'
        };
$VAR3 = 'testKunde';
$VAR4 = {
          'cert' => '',
          'comment' => 'kommentar
a
b
c
',
          'status' => 0,
          'type' => 'VPN',
          'certKey' => '',
          'username' => 'testKunde'
        };

Der Output des Scripts ist:
Code:
s:11:"nochEinTest"

Das ist jedoch nicht ganz das, was ich wollte. Eigentlich sollte die komplette Datenstruktur geserialisiert werden und nicht nur der erste Wert des ersten Elements.

Leider finde hab ich keine Ahnung, warum es nicht funktioniert. Ich hoffe ihr könnt mir weiterhelfen.
 

Ähnliche Themen

Zurück
Oben