Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2003 Teil von Juli

SELFHTML Forumsarchiv
Datei durchsuchen und bestimmte Teile speichern, sowie ausgeben

Informationsseite
  1. Seite (PERL) Datei durchsuchen und bestimmte Teile speichern, sowie ausgeben von bovo, 31. 07. 2003, 11:40
nach unten

Datei durchsuchen und bestimmte Teile speichern, sowie ausgeben

Die folgende Nachricht zum Thema stammt von: bovo, 31. 07. 2003, 11:40

Hallo liebe Leute,

Hier ist mein Problem :

Ich habe eine Text Datei, deren Inhalt ist z.B.: "a,2,b,3,aaa,4,*N,20" . Aber ohne Anführingsstriche und alles nur in einer Zeile!
Diese öffne ich und will nur die Inhalte zwischen den Komma's abspeichern, also egal wieviel Zeichen zwischen den Kommas sind.
Ich habe es schon mit :

open(DATEI, "<text.txt") || die " File not found.";
 @tests = <DATEI>;
    while(! eof(DATEI)){
      @tests =~ /(.*),(.*)/;
         $var1 = $1;
         $var2 = $2;
  printf "$1 und $2 \n";

    }
    close(DATEI);

versucht. Aber er gibt mir jedes in der Anzahl Zeichen Fälle aus, also im oberen Beispiel sinds 19 Zeichen...also 19 Fälle aber es sollten nur 8 Fälle sein.
Diese Fälle sind ohne Inhalt.

Ich hoffe Ihr könnt mir helfen.

Gruss
    Bovo

nach obennach unten

Datei durchsuchen und bestimmte Teile speichern, sowie ausgeben

Die folgende Nachricht zum Thema stammt von: Philipp Hasenfratz, 31. 07. 2003, 11:48

Halihallo bovo

»» open(DATEI, "<text.txt") || die " File not found.";
»» @tests = <DATEI>;
»»     while(! eof(DATEI)){

Stopp. Du liest die gesamte Datei in ein Array ein und machst eine While bis das
Dateiende erreicht wird, welches eigentlich bereits eingetreten ist und du gar nicht
mehr in der Datei nach vorne liest (sprich eof ist immer true)?

»»       @tests =~ /(.*),(.*)/;

Ein split ist hier wesentlich performanter und sicherer:

foreach (@tests) {
   my @parts = split(/,/,$_);  # du hast sowohl Dateidaten, als auch Parts im selben
         # array gespeichert, das _kann nicht gut kommen_.
   # do something with @parts
}

perldoc -f split

»»   printf "$1 und $2 \n";

printf sollte ohne Formatierung und Platzhalter vermieden werden, verwende hier einfach
print. printf ist unsicher und aperformant.

aus perldoc -f printf:
<cite>
            Don't fall into the trap of using a "printf" when a simple
            "print" would do. The "print" is more efficient and less error
            prone.
</cite>

Viele Grüsse

Philipp

--
RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den /faq/ und dem /archiv/.

nach obennach unten

Datei durchsuchen und bestimmte Teile speichern, sowie ausgeben

Die folgende Nachricht zum Thema stammt von: bovo, 31. 07. 2003, 12:46

Hallo Philipp...erstmal Danke für Deine Hilfe
aber wie kann ich die einzelnen gesplittenen Bereiche rausfiltern
und ausgeben und zwar in $var1 sowie $var2   ??

Danke Dir.

nach obennach unten

Datei durchsuchen und bestimmte Teile speichern, sowie ausgeben

Die folgende Nachricht zum Thema stammt von: Philipp Hasenfratz, 31. 07. 2003, 12:57

Halihallo bovo

»» aber wie kann ich die einzelnen gesplittenen Bereiche rausfiltern
»» und ausgeben und zwar in $var1 sowie $var2   ??

perldoc perlfaq4  // Sektion Array
perldoc perldata

=> über Indizies, @array : erstes Element ist Index 0 => $array[0]

Viele Grüsse

Philipp

--
RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den /faq/ und dem /archiv/.

nach obennach unten

Datei durchsuchen und bestimmte Teile speichern, sowie ausgeben

Die folgende Nachricht zum Thema stammt von: roman lenz, 31. 07. 2003, 13:00

hi hi

mit

foreach (@parts){
$_                 # $_ enthält den aktullen string
...
...
}

kommst du an jeden string

bis bis roman

nach obennach unten

Datei durchsuchen und bestimmte Teile speichern, sowie ausgeben

Die folgende Nachricht zum Thema stammt von: Siechfred, 31. 07. 2003, 11:55

Hi bovo,

»» open(DATEI, "<text.txt") || die " File not found.";
»»  @tests = <DATEI>;

Besser wäre an dieser Stelle das zeilenweise Einlesen mit while.

»»     while(! eof(DATEI)){

Das hier ist imho überflüssig.

»»       @tests =~ /(.*),(.*)/;

Hier wäre die Verwendung der split-Funktion angebrachter:

@test = split (/,/, $zeile);

Viele Grüße
Torsten

--
Feed your ears: http://www.siechfreds-welt.de/alchemist.html

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2003 Teil von Juli

© 1998-2006 Seite Impressum, Software: Classic Forum