![]() |
|< 1 2 >| | ![]() |
19 Einträge, 2 Seiten |
bieber+2007-08-02 10:15:14--mein Hirn streubt sich irgendwie immernoch dagegen, naja ich glaube das braucht einfach nur Zeit und Übung, irgendwann werde ich der größte Regex-Experte dieser Welt sein :D muhahaha
bieber+2007-08-02 10:36:41--was ich nicht verstehe ist die Konstruktion ?:
1 2 3 4 5 6 7 8 9 10 11
my $string = 'foo bar baz'; $string =~ /(\w+) (\w+) (\w+)/; print "1: $1, 2: $2, 3: $3\n"; $string =~ /(\w+) (?:\w+) (\w+)/; print "1: $1, 2: $2\n"; print "3: is empty\n" unless $3;
1
2
3
4
5
6
7
8
9
10
11
12
13
foreach (@datei) {
next if /
^ # vom Anfang der Zeile
\s* # 0 oder alle Whitespaces
( # Anfang des Captures
?: # es soll nicht gecaptured werden
[#;] # # oder ;
| # ODER
$ # das Ende der Zeile
) # Ende des Captures
/x; # beachte keine Whitespaces
chomp; my @work = split /\s+/;
}
opi+2007-08-02 10:56:36--
?: in einer runden Klammer veranlasst eine Regex, den Match
nicht in einer dieser Variablen abzuspeichern. Beispiele:
opi+2007-08-02 09:46:12--bieber+2007-08-02 09:39:00--funktioniert ;)
Wie hast du es denn nun gemacht? Denn wenn du einfach
nur /^$/ eingefügt hast, wirst du trotzdem bei Zeilen, die
nur Leerzeichen enthalten die Warnungen erhalten.
renee+2007-08-02 11:32:51--Nö, denn dann ist es nicht mehr "uninitialized"...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use strict;
use warnings;
my @datei = (' ');
foreach(@datei){
# leerzeilen interessieren nicht...
next if /^$/;
my $check="false"; #rücksetzen der checkVariabel
chomp; my @work = split /\s+/; #jede Zeile der Datei ins array "work" laden, je Trennzeichen
$work[0]=~ s/^\s+//g; #leerzeichen zu beginn einer Zeile löschen
next if substr ($work[0],0,1) eq '#'; #nächste Zeile der datei wenn das erste Zeichen "#" ist
next if substr ($work[0],0,1) eq ';';
next if substr ($work[0],0,1) eq '';
}
![]() |
|< 1 2 >| | ![]() |
19 Einträge, 2 Seiten |