Font
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6022[/thread]

Datei lesen und in Hash schreiben?

Readers: 2


<< |< 1 2 3 4 5 >| >> 46 entries, 5 pages
Math55
 2004-01-18 22:12
#79242 #79242
User since
2003-08-19
44 articles
BenutzerIn
[default_avatar]
hallo, sagen wir mal, ich habe eine datei, da steht folgendes drin:


#text #befehl
text1 befehl1
text2 befehl2
.....


und so weiter. nun möchte ich die datei lesen und alles in einen hash schreiben, also textX als name und befehlX als wert. jedes wort, was mit einem # beginnt, soll dabei inoriert werden.

jemand ne idee? danke :-)
eisbeer
 2004-01-18 22:57
#79243 #79243
User since
2003-08-29
347 articles
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
my $file = 'datei.txt';
my %hash;

open(FILE, "<$file") || die "Fehler: $!\n\n";
while (my $Line = <FILE>) {
   chomp $Line;
   if ($Line =~/^(\w+)\s+([^\n]+)(:?\s*#.*)?$/g) {
       $hash{$1}=$2;
   } else {
       next;
   }
}

close FILE;


untested :)\n\n

<!--EDIT|eisbeer|1074459659-->
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
Math55
 2004-01-18 23:34
#79244 #79244
User since
2003-08-19
44 articles
BenutzerIn
[default_avatar]
hi, sieht ja erstmal nicht schlecht aus:-). wie bekomme ich denn zum beispiel alle namen in ein array?

danke
kabel
 2004-01-19 00:13
#79245 #79245
User since
2003-08-04
704 articles
BenutzerIn
[default_avatar]
die regexp ist ja schon mächtig kompliziert ... naja.

wenn du das zeugs erst mal in einem hash hast, dann kannst du die operationen auf einem hash ausführen (perlfunc)
Quote
Functions for real %HASHes
"delete", "each", "exists", "keys", "values"

keys () liefert die schlüssel als array, also reicht z.b.
Code: (dl )
my @keys = keys %hash;
-- stefan
KKO
 2004-01-19 00:14
#79246 #79246
User since
2003-11-05
124 articles
BenutzerIn

user image
mit
my @names = keys %hash;

du kannst aber auch in einer schleife
foreach $name (keys %hash){
...
}
alle namen auslesen/bearbeiten
Gruß
KKO
KKO
 2004-01-19 00:22
#79247 #79247
User since
2003-11-05
124 articles
BenutzerIn

user image
jetzt kommt die frage, die mich auch gerade auch beschäftigt...
wie kann ich extern eingelesene perl-befehle aktiv im script ausführen lassen?
Gruß
KKO
kabel
 2004-01-19 00:34
#79248 #79248
User since
2003-08-04
704 articles
BenutzerIn
[default_avatar]
der befehl nennt sich eval und sollte mit vorsicht genossen werden. eval ist in 99% der fälle zum exception-handling da.
-- stefan
KKO
 2004-01-19 01:16
#79249 #79249
User since
2003-11-05
124 articles
BenutzerIn

user image
@kabel  danke fürs eval
ist für eine lokale, kompilierte anwendung gedacht, die teilweise in der ausführung variabel gestaltet werden soll/muss, ohne neu kompiliert zu werden.
wer also böses vorhat, der kann auch format c: direkt eingeben ohne die befehle-datei zu editieren
Gruß
KKO
eisbeer
 2004-01-19 07:34
#79250 #79250
User since
2003-08-29
347 articles
BenutzerIn
[Homepage] [default_avatar]
@kabel: Was gegen meine RegEx ;) ?
Nagut, du hast sogar recht, ich hab das
Codestück aus nem anderen Script geklaut
und schnell abgeändert und dabei n bissle
sinnloses Zeug drinstehen lassen, aber
solang se funktioniert ...
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
format_c
 2004-01-19 09:23
#79251 #79251
User since
2003-08-04
1706 articles
HausmeisterIn
[Homepage] [default_avatar]
[quote=eisbeer,19.01.2004, 06:34]...aber solang se funktioniert ...[/quote]
Und die Reg-Ex Engine unötig lange braucht...


Gruß Alex
<< |< 1 2 3 4 5 >| >> 46 entries, 5 pages



View all threads created 2004-01-18 22:12.