Nach dem dbmopen-Doku wurde diese Funktion weitgehend durch die "tie" -Funktion ersetzt. Ich kenne das Tie :: File-Modul, das über ein Perl-Array auf die Zeilen einer Disk-Datei zugreift. Wie würde ich es tun, wenn ich kein Array sondern ein Hash benötige?Der beste Weg, um einen Hash in eine Datei zu schreiben
Antwort
können Sie Storable verwenden:
use Storable;
store \%hash, 'file';
my $hashref = retrieve('file');
oder, wenn Sie mehr Daten speichern, müssen dann BerkeleyDB:
use BerkeleyDB;
use MLDBM qw(BerkeleyDB::Hash) ;
use Storable;
my $env = BerkeleyDB::Env->new(-Home => $home);
tie %store, 'MLDBM', -env => $env;
$store{my_stored_hash} = \%hash;
"Verwendung speicherbar" Link ist kaputt. Perl Leute änderten es zu diesem: http://perldoc.perl.org/Storable.html – con
Um einen Hash-Datei zu schreiben:
open(OUT,">myFile.txt");
foreach my $key (sort keys %hash) {
print OUT $key.",".$hash{$key}."\n";
}
close(OUT);
Bitte verwenden Sie keine Bareword-Dateihandles, niemals. Sie sind ein Risiko für die Sicherheit und Stabilität Ihrer Software und verbreiten sie für Neulinge überall auf der Welt. Ich werde meine Bewertung umkehren, sobald Sie die Änderung vorgenommen haben, stattdessen skalare Dateihandles zu verwenden. – Mithaldu
Das funktioniert, bis einer Ihrer Schlüssel ein Komma enthält. Und es hat normalerweise wenig Sinn, den Hash zu sortieren - benutze jeden, es sei denn, es ist wirklich wichtig. – Porculus
@Mithaldu, ich werde keinen Code ändern. Wenn Sie ein missionskritisches Kernkraftwerk entwerfen (es ist unwahrscheinlich, dass Sie Perl verwenden, da es von einem sehr talentierten Enthusiasten abhängt), kann ich Ihren Standpunkt sehen. Wenn Sie ein Stück Perl schreiben, um eine Arbeit so schnell wie möglich zu erledigen, sehe ich nicht, was das Problem ist. Wie auch immer, ich habe nie behauptet, eine vollständige Antwort zu geben - nur ein Hinweis darauf, wie man etwas tun könnte. Deshalb bist du neg rep ist erbärmlich. Ich fordere Sie auf, eine bessere Antwort zu geben. – Eamorr
Blick auf die Standard-AnyDBM_File Modul und die andere Dokumentation verweist darauf, für einige Beispiele von tie
statt dbmopen
verwenden.
Der Core-Modul SDBM_File einen Hash in eine Datei binden könnte:
use Fcntl;
use SDBM_File;
tie(%h, 'SDBM_File', 'filename', O_RDWR|O_CREAT, 0666) or die $!;
...
...
untie %h;
Aber: "... die Länge eines Schlüssels, plus die Länge seiner Assoziation Ed-Wert darf 1008 Bytes nicht überschreiten. "
- 1. Der einfachste Weg, um NSData in eine Datei zu schreiben
- 2. Was ist der beste Weg, um in eine Datei in Ruby zu schreiben?
- 3. Was ist der beste Weg, um Python-Code in eine Python-Datei zu schreiben?
- 4. Was ist der beste Weg, um den Inhalt eines StringIO in eine Datei zu schreiben?
- 5. Der beste Weg, um einen Dateityp in PHP zu erkennen
- 6. Der beste Weg, um eine Python-Funktion zu schreiben, die einen Gaussian integriert?
- 7. Der beste Weg, um eine URL in Vim zu öffnen
- 8. Was ist der beste Weg, um einen Hash in Ruby neu zu ordnen?
- 9. Der beste Weg, um eine Schnittstelle in C++ zu durchlaufen?
- 10. Der beste Weg, um IronPython zu erkennen
- 11. Der beste Weg, um eine Datei schreibbar in c machen #
- 12. AngularJS - der beste Weg, 'angular.module' zu schreiben?
- 13. Der beste Weg, um einen WYSIWYG in Flex zu machen?
- 14. Was ist der beste Weg, um eine perfekte Hash-Funktion für eine iOS-App zu implementieren?
- 15. playframework - Der beste Weg, um einen JSON-Werte zu trimmen
- 16. Was ist der beste Weg, um einen InputStream zu überwachen?
- 17. Der beste Weg, um einen Download zu starten?
- 18. Was ist der beste Weg, um einen Index zu erstellen, um die schnellste Leseantwort zu erhalten?
- 19. Der beste Weg, um eine Liste in Java zu pflegen
- 20. Was ist der beste Weg, um eine Hash-Rotation-Methode in C++ zu implementieren?
- 21. Was ist der beste Weg, um einen Int in einen String in Julia zu konvertieren?
- 22. Der beste Weg, um einen RESTful Service "Client" in .Net zu schreiben?
- 23. Was ist der beste Weg, um cXML-Dokumente in C# zu lesen und zu schreiben?
- 24. Ist perl der schnellste Weg, um eine Hochleistungsseite zu schreiben?
- 25. Der beste Weg, um eine Aufgabe zu planen?
- 26. Was ist der beste Weg, um einen zufälligen Hash/String zu erstellen?
- 27. Der beste Weg, um einen Benutzer eindeutig zu identifizieren
- 28. Was ist der beste Weg, Tabellendaten in Python zu schreiben?
- 29. Was ist der beste Weg, um einen Datenrahmen zu umgehen?
- 30. Der einfachste Weg, um eine einfache bedingte Prüfung zu schreiben
Dies hängt ganz davon ab, was Sie erreichen möchten und wie viele Daten gespeichert werden. Können Sie weitere Informationen hinzufügen? – Ether
Ich wäre eine Alternative zu (dem ersetzten) dbmopen. In diesem Fall sind es nicht viele Daten. –
Mit Informationen meinte sie: Was für Informationen? Wie wird es benutzt? Wie viel genau? Gibt es irgendwelche Einschränkungen? – Mithaldu