Schrift
[thread]6240[/thread]

Variablen, Arrays & Hashes...: ... speichern



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Free Faq
 2004-05-09 20:10
#82120 #82120
User since
2003-09-10
141 Artikel
BenutzerIn
[default_avatar]
Zja mir hat sich vom gelösten Problem ein weiteres Problem (oder auch kein Problem?) ergeben :p
Weil es übersichtlicher ist, speichere ich Einstellungen in Dateien als Variablen/ Arrays und Hashes.
Zum Beispiel habe ich eine Datei in der folgendes steht:
Code: (dl )
@Array = ("0","1","2","3","4","5","6");

Nun lese ich diese Datei über do oder require ein (was is den da genau der Unterschied?). Weiter will ich den Array bearbeiten oder wie in diesem BEISPIEL! einen Eintrag hinzufügen.
Nun hab ich mir das etwa so überlegt:
Code: (dl )
1
2
3
4
5
6
7
8
$Data = "\@Array = (";
foreach (@Array) {
$Data .= "\"$_\",";
}
$Data .= "\"$Input\"";
$Data .= ");";

print $Data;

Später wird $Data halt wieder gespeichert.
Aber - wenn ich ehrlich bin, find ich das ziemlich doof! Wie kann man das besser/ eleganter lösen?
Wie kann ich das mit Variablen und Hahes besser machen?\n\n

<!--EDIT|Free Faq|1084119113-->
Haut mich nicht, ich bin ein Noob!
Strat
 2004-05-09 20:43
#82121 #82121
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
CPAN:Data::Dumper und mit eval wieder herstellen?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
[E|B]
 2004-05-09 21:46
#82122 #82122
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Unterschiede "do" und "require":

1. "do" beachtet immer @INC
2. "do" hat keine implizite Fehlerprüfung
3. "do" ist schneller getippt ;)
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
Free Faq
 2004-05-09 22:36
#82123 #82123
User since
2003-09-10
141 Artikel
BenutzerIn
[default_avatar]
@Strat: Könntest du mir ein kleines Beispiel schreiben?
Ich kann mit dem Englisch kauderwelsch nichts anfangen. Ich mag zwar Englischgrundlagen kennen, aber die CPAN Sachen sind mir zu hoch :(
Danke @ E|B ! Wie hab ich Punkt 2 genau zu verstehen?
Haut mich nicht, ich bin ein Noob!
Gast Gast
 2004-05-10 01:03
#82124 #82124
[E|B
,09.05.2004, 19:46]1. "do" beachtet immer @INC

'do' beachtet @INC nicht - im Gegensatz zu 'require'
pq
 2004-05-10 17:10
#82125 #82125
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich finde solche sachen wie YAML oder Storable besser als Data::Dumper:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
# ungetestet
use YAML;
open FH, "datei" or die $!;
my $yaml = do { local $/; <FH> };
close FH;
my $array_ref = Load($yaml);
$array_ref->[$neuer_index] = $neuer_wert;
$yaml = Dump($array_ref);
open FH, ">datei" or die $!;
print FH $yaml;
close FH;
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Gast Gast
 2004-05-10 17:16
#82126 #82126
Schon richtig ...
aber wenn Du auf die CGI-Schnittstelle programmierst dann hast Du das Problem dass 'Storable' nicht unbedingt auf jedem Server installiert ist.
Data::Dumper ist mittlerweile in jeder Standart-Distribution enthalten.
Eine Alternative wäre dann noch 'Tie' ...
ptk
 2004-05-10 18:24
#82127 #82127
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Bei Data::Dumper kann man auch Pech haben:
Code: (dl )
1
2
3
4
5
$ corelist Data::Dumper
Data::Dumper was first released with perl 5.005

$ corelist Storable
Storable was first released with perl 5.007003

OK, das muss schon ziemlich viel Pech sein :-)

PS: Standard, bitte!
Crian
 2004-05-10 18:34
#82128 #82128
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
[quote=ptk,10.05.2004, 16:24]PS: Standard, bitte![/quote]
puh, ich schein nicht der einzige zu sein, der auf die Stand-Art ;-) allergisch reagiert *g
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Gast Gast
 2004-05-10 20:15
#82129 #82129
*grin* einer meine Lieblings-Rechtschreibfehler ...
aber wenn ich mir mal die anderen Beiträge im Forum ansehe, dann komme ich doch noch ziemlich gut weg ;)
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2004-05-09 20:10.