Leser: 1
![]() |
|< 1 2 >| | ![]() |
18 Einträge, 2 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
while ( my $line = <DATA> ) {
chomp($line);
print "Zeile: $line\n";
# Optionen für Zeile2
my %z2opt = ( Authority => 0, Exit => 0, Fast => 0, Guard => 0,
Running => 0, Stable => 0, V2Dir => 0, Valid => 0 );
my $z2optstring = join( '|', keys %z2opt );
# Zeile3
if ( $line =~ /^opt v (\w+) ((?:\d+\.)*?\d+)$/ ) {
print "Zeilentyp: 3\nName: $1\nVersion: $2\n";
}
# Zeile1
if ( $line =~ /\s(\d{4}-\d\d-\d\d)\s(\d\d:\d\d:\d\d)\s(\d+\.\d+\.\d+\.\d+)\s(\d+)\s\d+$/ ) {
print "Zeilentyp: 1\nDatum: $1\nUhrzeit: $2\nIP Adresse: $3\nPort: $4\n";
}
# Zeile2
if ( $line =~ /^s\s((?:(?:$z2optstring)\s*)+)$/ ) {
my $options = $1;
print "Zeilentyp: 2\n";
foreach my $opt ( keys %z2opt ) {
$z2opt{$opt} = 1 if $options =~ /$opt/;
print $opt, ': ', $z2opt{$opt} ? 'yes' : 'no', "\n";
}
}
print "\n";
}
r AbbyNormal 1kp4+bE83l+pBSDfBgDHju57NFE 3Job71lL5/qbZMzifsCuQCFgbV8 2007-08-06 10:34:06 72.15.233.132 9001 0
1 2 3 4
# Zeile1 if ( $line =~ /^r\s([a-zA-Z0-9_])\s[a-zA-Z0-9_\/\+]\s[a-zA-Z0-9_\/\+]\s(\d{4}-\d\d-\d\d)\s(\d\d:\d\d:\d\d)\s(\d+\.\d+\.\d+\.\d+)\s(\d+)\s\d+$/ ) { print "Zeilentyp: 1\nDatum: $1\nUhrzeit: $2\nIP Adresse: $3\nPort: $4\n"; }
/^r\s(\S+)\s\S+\s\S+\s(\d{4}-\d\d-\d\d)\s(\d\d:\d\d:\d\d)\s((?:\d+\.){3}\d+)\s(\d+)\s\d+$/
print $opt, ': ', $z2opt{$opt} ? 'yes' : 'no', "\n";
1 2 3 4 5 6 7 8 9 10 11 12 13 14
$line =~ / ^s # Buchstabe s am Zeilenanfang \s # gefolgt von einem Whitespacezeichen ( # einfangende Klammer; was vom Regex hierin gefunden wird, landet in $1 (?: # gruppierende Klammer; *kein* Einfangen (?: # gruppierende Klammer; *kein* Einfangen $z2optstring # Skalar mit den Alternativen ) # Ende innere gruppierende Klammer; damit sind die Alternativen unter sich \s* # beliebig viele Whitespaces; keines oder mehrere; {0,}; nach jeder Alternative kann min. 1 Whitespace auftauchen )+ # Ende äußere grupp. Klammer; min. ein Vorkommen, oder mehr; {1,}; mindestens eine Alternativ sollte zu finden sein ) # Ende der einfangenden Klammer $ # Zeilenende /x
#Aug 11 18:23:28.562 [Info] exit circ (length 3, exit WhomtheBelltolls): $E53CF5073BD3C79C9D61628789C1856A62D139F5(open) $5C854C6CE50727F32E51274B1CF4DF9693A206EA(open) $337E599367550A6BF3D9785AAB1FABAFEB1B9B0B(open)
1 2 3
if ($line =~ /\w+\s\d\d:\d\d:\d\d.\d\d\d\s\[Info\]\sexit\scirc\s\(length\s\d/){ print "ok"; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
my ($nickname, $last_fingerprint) = $line =~ / \A # anchor at start \# # literal number sign \w{3} # month \s \d\d # day \s \d\d:\d\d:\d\d\.\d{3} # timestamp \s \[\w+\] # log level between brackets \s .*? # log msg \s \( # literal paren open .*? # stuff in the parens \s # space preceding the nickname (\w+) # capture the nickname \) # literal paren close : \s \$[0-9A-F]{40}\(\w+\) # literal $, 40 hex digits, paren open, word, paren close \s \$[0-9A-F]{40}\(\w+\) # again \s \$([0-9A-F]{40})\(\w+\) # capture last fingerprint \z # anchor at end /msx; # PBP
![]() |
|< 1 2 >| | ![]() |
18 Einträge, 2 Seiten |