User since
2006-04-14
72
Artikel
BenutzerIn
Ich lese aus einer Datei zeilenweise informationen aus und möchte dass aus diesen Zeilen einzelne Informationen rausgelesen werden.
die zeilen sind vom typ:
1.ergebnis[Zahl]
2.ergebnis_Zahl[Zahl]
Im ersten Fall möchte ich die Zahl, im zweiten brauch ich beide Zahlen. Ich hätte gern eine Bedingung die mir Testet ob die Zeile vom Typ 1 oder 2 ist und je nachdem die Zahlen speichert.
foreach(@Zeilen) {
# if (/ergebnis/){
# hier bedingung
# }
User since
2005-01-17
14787
Artikel
Admin1
foreach(@Zeilen) {
if ( /ergebnis\[(\d+)\]/ ){ # Typ 1
# hier bedingung
$zahl1 = $1;
} elsif ( /ergebnis_(\d+)\[(\d+)\]/ ) { # Typ 2
$zahl1 = $1;
$zahl2 = $2;
}
\n\n
<!--EDIT|GwenDragon|1145368621-->
User since
2006-04-14
72
Artikel
BenutzerIn
\[(\d+)\]/
steht das d für digit? und bedeutet dass dann praktisch ein "oder mehr zahlen"?
und kann ich anstatt $zahl1 = $1; auch $zahl1 = shift;
schreiben?\n\n
<!--EDIT|Noisebreath|1145370650-->
User since
2003-08-04
2145
Artikel
ModeratorIn + EditorIn
[quote=Noisebreath,18.04.2006, 16:25]\[(\d+)\]/
steht das d für digit?
[/quote]
Ja.
Quoteund bedeutet dass dann praktisch ein "oder mehr zahlen"?
Dafür das ist "+" gut.
Siehe
perlreref,
perlrequick,
perlretut,
perlre.
User since
2006-04-14
72
Artikel
BenutzerIn
Global symbol "$zahl1" requires explicit package name at
Global symbol "$zahl1" requires explicit package name at
Global symbol "$zahl2" requires explicit package name at
kommt als fehlermeldung... (??)
User since
2005-01-17
14787
Artikel
Admin1
Ich dachte, dein Code ist nur nur ein Ausschnitt.
Na, du musst $zahl1 und $zahl2 in deinem Skript definieren.
User since
2005-08-17
1420
Artikel
BenutzerIn
[ ] du hast grundlegende Kenntnisse von Perl?
Spass beiseite, wenn du das in einem Skript benutzt, das use strict nutzt, dann musst du deine Variablen natürlich mittels my deklarieren. Sonst kommt besagte Fehlermeldung.
User since
2006-04-14
72
Artikel
BenutzerIn
Danke sehr,
ne ehrlich gesagt hab ich noch keine ahnung von Perl. Hab bisher immer mit PHP gearbeitet.. naja.. hab schon mitbekommen dass es ganz schön anders läuft hier und da :-/
User since
2006-04-14
72
Artikel
BenutzerIn
noch eine frage:
wie schaffe ich es dass er in einer zeile nur einmal den suchstring am anfang der zeile ausliest zb:
45;Datum.von;Datum.von;45;0;-1;;;;DATE;10;0;0;;
diese zeile ist zu untersuchen
if(/45\;(\w+)\;/){
$header = $1;
}
ich möchte aber nur datum in header stehn haben und nicht auch noch die später in der zeile kommende 0. möchte sozusagen nur die 45 untersuchen die am satzanfang kommt, da es sein kann dass auch in früheren zeilen mitten in den zeilen die zahl 45 auftaucht..
wie kann ich das erreichen?
P.S.: muss ich bei reg ausdrücken ein \ vor " setzen?mein editor färbt mir das komisch an aber das programm läuft richtig.bin unter windows am progen und weiss nicht ob das unter linux einen unterschied macht?!
zb: ( /dokuart = "(\w+)"/)\n\n
<!--EDIT|Noisebreath|1145378821-->