Schrift
[thread]6764[/thread]

Von Arrays, Files und überhaupt.



<< >> 7 Einträge, 1 Seite
Cer
 2005-03-04 22:52
#52307 #52307
User since
2005-03-03
2 Artikel
BenutzerIn
[default_avatar]
Salut.

Ich habe seit einer Woche ca. meine Bash- Scripting - Karriere aufgegeben.

Nun mache ich also Perl und so.

Allerdings habe ich hier und da noch so einige Probleme.
Unter anderem flogendes.


Ich habe eine Datei mit folgendem Inhalt:

eins:a a a a:b b b b:c c c:
zwei:d d d d:e e e e:f f f f:
...

Diese Datei lese ich in einen Array, das klappt auch alles soweit gut, allerdings hätte ich es gerne, dass nun jede Zeile dieser Datei in einen eigenen Array soll, wobei der Doppelpunkt als Trennzeichen fungieren soll. Wobei die Zeilenanzahl der Datei sich jederzeit ändern kann.

Für einen kleinen Denkanstoß oder auch ein kleines Beispiel wäre ich dankbar :D

-Cer
pq
 2005-03-04 23:45
#52308 #52308
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
my @lines;
while (<$fh>) {
 chomp;
 push @lines, [split m/:/, $_];
}
use Data::Dumper;
print Dumper \@lines;

http://wiki.perl-community.de/bin/view/Perldoc
http://wiki.perl-community.de/bin/view/Wissensbasis/UseStrict
perldoc perlintro
perldoc perldata
perldoc perlref\n\n

<!--EDIT|pq|1109972792-->
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
Ronnie
 2005-03-04 23:48
#52309 #52309
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Bin nicht sicher ob ich dich richtig verstanden habe, aber vieleicht hilft dir folgendes Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;

print Dumper map {[split /:/, $_]} (<>);
exit;


EDIT1: Da war wieder jemand schneller. Hallo pq *wink*
EDIT2: Beispiel eingedampft, das es nicht ganz so langweilig ist.\n\n

<!--EDIT|Ronnie|1109973283-->
Cer
 2005-03-05 23:36
#52310 #52310
User since
2005-03-03
2 Artikel
BenutzerIn
[default_avatar]
Erstmal danke für Antworten, allerdings bin ich für das arbeiten mit Modulen wohl noch nicht "skilled" genug. :blush: Ich habe daher folgende Variante versucht.

Code: (dl )
1
2
3
4
@main::data = <FILE>;  
            my $count = 1;
            foreach my $a (@main::data) {$count++} # Anzahl der Zeilen ...
            foreach my $b ($count) {"@main::zeile$b" = split (/:/,"$main::data[$b]")}


Bei der Bezeichnung der Variablen habe ich wohl noch irgendeinen Fehler, den ich nicht finden kann.\n\n

<!--EDIT|Cer|1110058661-->
pq
 2005-03-06 00:15
#52311 #52311
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
das modul Data::Dumper ist nur zur ausgabe gedacht. ich verstehe nicht,
was dich an unserem beispiel stört; sollte doch lauffähig sein.
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
deepblack
 2005-03-06 01:19
#52312 #52312
User since
2004-06-15
46 Artikel
BenutzerIn
[default_avatar]
hm die lösung von ronnie z.b. ist doch viel klarer und einfacher zu verstehen als die letzte version mit foreach.. ausserdem dürfte se ne ecke schneller sein denk ich nu mal gerade ;)

@cer Data::Dumper ist ne sehr feine sache. solltest du dir mal genauer anschauen, obwohl es da nicht viel zu schauen gibt :)
print Dumper(($/@/%datenstruktur); und das wars auch schon..
We have joy, we have fun, we have a root shell on a SUN!
ptk
 2005-03-07 11:28
#52313 #52313
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Wenn du mit Shellprogrammierung vertraut bist, dann beherrscht du vielleicht auch awk und sed. Mit Perl werden die Programme a2p und s2p mitgeliefert, die aus einem awk/sed-Programm ein Perl-Programm machen.
<< >> 7 Einträge, 1 Seite



View all threads created 2005-03-04 22:52.