Schrift
[thread]9140[/thread]

Ein string auf ein Musterüberprüfen ! (Seite 2)



<< |< 1 2 3 4 5 6 >| >> 52 Einträge, 6 Seiten
mr-sansibar
 2007-07-04 15:54
#78030 #78030
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
ich wil das er mir aus dem string das Context ersetzt durch nichts und whitespaces durch ein leerzeichen !!!
renee
 2007-07-04 16:12
#78031 #78031
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Da sind deine beiden RegEx's schon vollkommen ok...
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/
bloonix
 2007-07-04 17:08
#78032 #78032
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=renee,04.07.2007, 13:41]So wird mit diesem Ausdruck z.B. auch ein Tabulator durch ein Leerzeichen ersetzt.[/quote]
*arg* an Tabs und Newlines etc. hab ich jetzt garnicht gedacht
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
mr-sansibar
 2007-07-04 17:08
#78033 #78033
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
Hi!
Gibt es eine seite im Internet wo es Tips gibt um ein Perl Skript performant wie möglich zu schreiben.
ich muss eine 100 MB oder grösser lesen und parsen.#

zusätzlich habe ich das Problem, wenn ich zu größße dateien >100 MB mein Perl Skript nicht m ehr läuft. aber mit kleineren funktioniert.
habt ihr eine Idee voran es liegen kann ?????????

Grüße, Ümit\n\n

<!--EDIT|mr-sansibar|1183554867-->
sid burn
 2007-07-04 17:22
#78034 #78034
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Naja, wenn du dein Code auch Posten würdest könnte man mehr dazu sagen.

Ansnonsten benutzt du zufällig soetwas in deinem Code?

Code: (dl )
1
2
3
for my $line ( <$fh> ) {
#mache etwas mit $line
}


Wenn ja dann ändere es mal so ab:
Code: (dl )
1
2
3
while ( my $line = <$fh> ) {
# mache etwas mit $line
}


Eine for Schleife arbeitet im Listenkontext daher wird zuerst die ganze Datei eingelesen, und dann erst jede Zeile durchgearbeitet. Bei einer while Schleife hast du diesen Effekt nicht.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
renee
 2007-07-04 17:25
#78035 #78035
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=mr-sansibar,04.07.2007, 15:08]Hi!
Gibt es eine seite im Internet wo es Tips gibt um ein Perl Skript performant wie möglich zu schreiben.[/quote]
http://board.perl-community.de ;) :p
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/
mr-sansibar
 2007-07-04 17:26
#78036 #78036
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
Code: (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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
while(<$fh3>)
{

if(/^Context:/)
{
$line = chomp($_);

$line= substr($_,10,length($_));
@array = split(/ /, $line);
$line='';


foreach my $idx (0 .. 5) {
$array[$idx].="|"
}
print "$counter|",@array,"\n";

if($array[2] ne "|")
{

$counter++;

print $fh1 "$counter|",@array,"\n"
}
}

if(/Message:/ || $MessageFound)
{
if($array[2] ne "|")
{

$MessageFound=1;

if($_ =~ /^\n/)

{

chomp($line);

$line =~ s/\s/ /g;

print $fh2 "$counter|$line\n";

$line = '';

$MessageFound=0;

}

else

{ chomp($_);

$line .= $_

};
}
}
}
$headline=1;

}
\n\n

<!--EDIT|mr-sansibar|1183555853-->
renee
 2007-07-04 18:40
#78037 #78037
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was soll das Programm genau machen?? Bitte Aufgabe grob skizzieren und Beispieldaten liefern.

Du solltest auch mal diesen Wiki:Artikel lesen...
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/
mr-sansibar
 2007-07-06 11:39
#78038 #78038
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
Hallo Renee !
Habe mir das mal durchgelesen mit use strict !
Mein Skript soll eine Datei die folgende Struktur hat:

Context: 06.06.2007 14:06:42,488 a1e2-237a-403c-98f00 340758 123456 48 de.x.y.z.a.b.c.text
Message: No last used url was provided. Go back to default url []

Context und Message Zeilen voneinander trennen und in separate Dateien schreiben in dieser Form:

06.06.2007|14:06:42,488|a1e2-237a-403c-98f00|340758|123456|48|de.x.y.z.a.b.c.text

Message: No last used url was provided. Go back to default url []

das klappt ja wunderbar bis auf dateien die so um die 100 MB gross sind, denn fängt mein Skript an zu streiken !

Grüße, Ümit\n\n

<!--EDIT|mr-sansibar|1183707666-->
renee
 2007-07-06 11:54
#78039 #78039
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
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
#!/usr/bin/perl

use strict;
use warnings;

my $file = '/path/to/file.txt';
my $context_file = '/path/to/context.txt';
my $message_file = '/path/to/message.txt';

open my $context, '>', $context_file or die $!;
open my $message, '>', $message_file or die $!;

open my $in , '<', $file or die $!;
while( my $line = <$in> ){
    if( $line =~ /^Context/ ){
        $line =~ s/^Context:\s+//;
        $line =~ tr/ /|/;
        print $context $line;
    }
    elsif( $line =~ /^Message:/ ){
        print $message $line;
    }
}
close $in;


close $message;
close $context;


ungetestet...
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/
<< |< 1 2 3 4 5 6 >| >> 52 Einträge, 6 Seiten



View all threads created 2007-06-29 17:48.