|< 1 2 >| | 13 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
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/perl
use strict;
use warnings 'all';
# dateinamen
my $inputfile = '/var/log/mail.log.1';
my $outputfile = '/var/www/alle_rejects.txt';
# oeffne inputfile
open(my$fhin, '<', $inputfile) or die "$inputfile: $!";
# array f�r die ausgabe
my @output;
# lies zeile f�r zeile
while (my$line = <$fhin>)
{
if ($line =~ m/\breject\b/)
{
# wenn der Suchstring "reject" vorkommt,
# und "from" gefunden wird,
# wird das ausgabearray erweitert
if ( $line =~ m/from\s*(.*?):/ )
{ push(@output, substr( $line, 0, 15 ) .' : '. $1) }
}
}
# inputfile schliessen
close $fhin;
# ausgabearray bearbeiten
unshift(@output, $#output+2);
# oeffne outputfile
open(my$fhout, '>', $outputfile) or die "$outputfile: $!";
# daten rausschreiben
map { print $fhout "$_$/" } @output;
# outputfile schliessen
close $fhout;
if ($line =~ m/\breject \b*/)
#Kein Kommentar+2007-08-01 20:12:52--das mit dem
if ($line =~ m/\breject \b/)
könnte man so erklären, dass in $line "bla bla reject bla bla" steht,
sodass nur ein Leerzeichen da steht, aber Perl noch eins durch \b erwartet.
Quotevielleicht sollte man es besser so schreiben:
Code: (dl )if ($line =~ m/\breject \b*/)
Hilft dir das weiter?
renee+2007-08-01 21:59:19--Nein, \b ne \s. Unter \b fallen mehrere Sachen...
#Kein Kommentar+2007-08-02 10:42:52--renee+2007-08-01 21:59:19--Nein, \b ne \s. Unter \b fallen mehrere Sachen...
aber \b ist doch im grunde wie \s
auszug aus der doku:
\b Match a word boundary
und eine wortunterbrechung ist doch \s ( ,\t,\r,\n,\f)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#!/usr/bin/perl use strict; use warnings; my @tests = ( 'Tester', 'Test ist das', '(Test)was', 'Test.', 'Test,', 'Test ', 'Test&', 'Test(', 'Test123', '8Test-er', ); for my $test ( @tests ){ my $val = $test =~ /Test\b/ ? 'yes' : 'no'; print sprintf "%13s: %s\n", $test, $val; }
1
2
3
4
5
6
7
8
9
10
11
12
C:\>word_boundary.pl
Tester: no
Test ist das: yes
(Test)was: yes
Test.: yes
Test,: yes
Test
: yes
Test&: yes
Test(: yes
Test123: no
8Test-er: yes
#Kein Kommentar+2007-08-02 10:42:52--aber \b ist doch im grunde wie \s
1 2 3
my ($from) = $line =~ /from=<(.*?)>/; my ($to) = $line =~ /to=<(.*?)>/; print $from, "::", $to;
|< 1 2 >| | 13 Einträge, 2 Seiten |