Speichere und lese Hash und Array in Dateien in Perl

8

Ich bin ein Anfänger. Ich brauche Grundkenntnisse darüber, wie Daten unter Perl gespeichert und gelesen werden sollen. Sagen Sie, um einen Hash und ein Array zu speichern. Welches Format (Erweiterung) der Datei sollte verwendet werden? txt? Bisher kann ich nur alle Dinge als String print FILE %hash speichern und sie als String print <FILE> zurücklesen. Was soll ich tun, wenn ich meine Funktion Hash- und Array-Eingaben aus einer Datei benötige. Wie man sie zu Hash und Array zurückbringt?

    
Ivan Wang 21.05.2012, 11:46
quelle

4 Antworten

19

Sie suchen nach Daten Serialisierung . Beliebte Optionen, die robust sind, sind Sereal , JSON < a href="http://p3rl.org/JSON::XS"> :: XS und YAML :: XS . Weniger bekannte Formate sind: ASN.1 , Avro , BERT , BSON , CBOR , JSYNC , MessagePack , Protokollpuffer , Sparsamkeit .

Andere oft erwähnte Optionen sind Storable und Daten :: Dumper (oder ähnlich) / eval , aber ich kann sie nicht empfehlen, da das Storable-Format Perl-abhängig ist und eval unsicher ist, weil es willkürlichen Code ausführt. Ab 2012 ist der Parsing-Counter-Part Data :: Undump noch nicht weit fortgeschritten. Ich kann auch nicht die Verwendung von XML empfehlen, da Perl-Datentypen nicht gut zugeordnet werden und es mehrere konkurrierende / inkompatible Schemas gibt, wie zwischen XML und Daten zu übersetzen ist.

Codebeispiele (getestet):

%Vor% %Vor%

Der nächste Schritt von hier ist Objektpersistenz .

Lesen Sie auch: Serialisierer für Perl: wann was verwenden soll

    
daxim 21.05.2012, 11:55
quelle
3
1

Dies hängt wirklich davon ab, wie Sie Ihre Daten in Ihrer Datei speichern möchten. Ich werde versuchen, etwas grundlegenden Perl-Code zu schreiben, damit Sie eine Datei in ein Array lesen oder einen Hash in eine Datei schreiben können.

%Vor%     
verisimilitude 21.05.2012 12:00
quelle
0

Wenn Sie neu sind, schlage ich nur make vor, um aus array / hash mit join () zu stringeln, und sie schreiben es mit "print" und lesen und benutzen dann split () um array / hash erneut zu machen. Das wäre einfacher, als würde Perl Lehrbuchbeispielen beibringen.

    
Vytautas Vytas 21.05.2012 14:54
quelle

Tags und Links