Schrift
[thread]12583[/thread]

Regülarer Ausdrück zu einem hash array (Seite 2)

Leser: 2


<< |< 1 2 >| >> 20 Einträge, 2 Seiten
MatthiasW
 2008-10-04 17:46
#115160 #115160
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Hast du dir meinen Beitrag durchgelesen?

Naja, durch ein paar kleine Modifikationen an meinem geposteten Skript, läuft es:
Code (perl): (dl )
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
#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;

my $file = 'test.txt';

my %proc = (
        'ClientConnect'  => sub{ print "Client $_[0] connected\n" },
        'ClientBegin'    => sub{ print "Client $_[0] began\n"     },
        'ClientUserinfo' => sub{
                my $line = shift;

                if ( $line =~ /(\d+) \\(.*)/ )
                {
                        print "Client $1: $2\n";

                        my $logline     = $2;
                        my %player_info = split /\\/, $logline;

                        print Dumper \%player_info;
                } # if
        },
);

open( my $fh, '<', $file )
        or die "Cannot open file '$file': $!";

while ( my $line = <$fh> )
{
        chomp($line);

        if ( $line =~ /^\s+(\d{1,2}:\d{2}) ((\w+):(?: )?(.*)?)/ )
        {
                if ( defined $3 and defined $4 )
                {
                        $proc{$3}->($4) if exists $proc{$3};
                } # if
        } # if
} # while

__END__

Ich habe $logline einfach anhand von \ gesplittet.
Weiter unten habe ich noch die Prüfung hinzugefügt, ob es eine Routine für die jeweilige Aktion gibt. (bsw.: ClientConnect)

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
Tom99
 2008-10-04 18:02
#115161 #115161
User since
2008-10-04
10 Artikel
BenutzerIn
[default_avatar]
Ja ich hatte es mir durch gelesen ich wollte nur mal posten was ich bisher habe.
Die Methode mit splite ist natürlich viel besser.
pq
 2008-10-04 18:45
#115162 #115162
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
noch ein kommentar zu Switch: das ist ein modul, was sourcefilter benutzt. nicht zu
empfehlen. interessant zum experimentieren.
ab perl 5.10 gibts given/when, was im prinzip so funktioniert wie ein switch.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Tom99
 2008-10-04 19:03
#115163 #115163
User since
2008-10-04
10 Artikel
BenutzerIn
[default_avatar]
Ah wo kann ich das den finden?
Also die Dokumentation der Funktion.
renee
 2008-10-04 20:21
#115164 #115164
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Welche Funktion meinst Du?

Generell findest Du Dokus zu funktionen so: perldoc -f <funktionsname>

z.B.
perldoc -f split
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Tom99
 2008-10-04 20:27
#115165 #115165
User since
2008-10-04
10 Artikel
BenutzerIn
[default_avatar]
when
pq
 2008-10-04 20:42
#115166 #115166
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
auf deiner festplatte: perldoc perlsyn

im netz:
http://perldoc.perl.org/perlsyn.html#Switch-statem...
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Tom99
 2008-10-04 20:46
#115167 #115167
User since
2008-10-04
10 Artikel
BenutzerIn
[default_avatar]
Danke.
Noch eine Frage gibts in Perl kein true oder false?
pq
 2008-10-04 20:56
#115168 #115168
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
Tom99+2008-10-04 18:46:19--
Noch eine Frage gibts in Perl kein true oder false?

doch, es ist nur viel einfacher. man braucht kein true oder false.
Code (perl): (dl )
1
2
3
4
5
6
7
8
my $x = 1;
if ($x) {} # true
$x = 0;
if ($x) {} # false
$x = "";
if ($x) {} # false
$x = <alles ausser 0 oder leerstring>;
if ($x) {} # true

lies mal Wiki:perlintro
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Tom99
 2008-10-04 20:58
#115169 #115169
User since
2008-10-04
10 Artikel
BenutzerIn
[default_avatar]
Hab ich doch :)
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2008-10-04 15:42.