Schrift
[thread]8259[/thread]

aus array kommas löschen: hilfe ...



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Annka
 2006-08-23 13:38
#69115 #69115
User since
2006-07-18
43 Artikel
BenutzerIn
[default_avatar]
hi,

ich kanns wieder mal nicht,

hatte aber an sowas gedacht:

Code: (dl )
(@title)=split( /, /,$_);


was meint ihr?

/Modedit GWendragon: Bitte Code in Code-Tags einschließen oder Emoticons abschalten\n\n

<!--EDIT|GwenDragon|1156327933-->
Ronnie
 2006-08-23 13:43
#69116 #69116
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Wie sieht den der Inhalt des Arrays aus?

EDIT: Einfach mal ins Blaue:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;

my @array = ('foo, bar', 'bar, baz', 'foo, bar, baz');
@array = map {s/,//g; $_} @array;
print Dumper \@array;
\n\n

<!--EDIT|Ronnie|1156326356-->
renee
 2006-08-23 13:52
#69117 #69117
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was meinst Du denn mit "aus array kommas löschen". Wie sieht Dein Array im Moment aus und wie soll es hinterher aussehen?

Was Dein Code macht: Teile ein Skalar an Kommas.
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/
Crian
 2006-08-23 15:32
#69118 #69118
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Code: (dl )
s~,~~g for @array;
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
pq
 2006-08-23 15:51
#69119 #69119
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Crian,23.08.2006, 13:32]
Code: (dl )
s~,~~g for @array;
[/quote]
aua. dann schon eher
tr~,~~d for @array;\n\n

<!--EDIT|pq|1156333877-->
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
sid burn
 2006-08-23 18:07
#69120 #69120
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=pq,23.Aug..2006, 13:51][quote=Crian,23.08.2006, 13:32]
Code: (dl )
s~,~~g for @array;
[/quote]
aua. dann schon eher
tr~,~~d for @array;[/quote]
Och würde ich nicht umbedingt sagen:

Code: (dl )
1
2
3
4
5
6
use Benchmark qw(:all);
my $string = 'Hallo, Welt blub blub, foo, bar.' x 10_000;
cmpthese( 10000, {
'regex' => sub { $string =~ s/,//g; },
'trans' => sub { $string =~ tr/,//d },
});

Code: (dl )
1
2
3
        Rate trans regex
trans 1190/s -- -62%
regex 3145/s 164% --


Code: (dl )
1
2
3
4
5
6
7
8
9
use Benchmark qw(:all);
my @array;
for ( 0..1_000 ) {
$array[$_] = 'Hallo, Welt blub blub, foo, bar.';
}
cmpthese( 10000, {
'regex' => sub { s/,//g for @array; },
'trans' => sub { tr/,//d for @array; },
});

Code: (dl )
1
2
3
        Rate trans regex
trans 3012/s -- -24%
regex 3968/s 32% --
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
renee
 2006-08-23 18:25
#69121 #69121
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl

use Benchmark qw(:all);


cmpthese( 10000, {
'regex' => sub {my $string = 'Hallo, Welt blub blub, foo, bar.' x 1000; $string =~ s/,//g; },
'trans' => sub {my $string = 'Hallo, Welt blub blub, foo, bar.' x 1000; $string =~ tr/,//d },
});


Code: (dl )
1
2
3
4
C:\community>bench.pl
Rate regex trans
regex 387/s -- -75%
trans 1534/s 296% --
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/
Dubu
 2006-08-23 18:30
#69122 #69122
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Dir ist schon klar, dass in deinen beiden Benchmarks die Ersetzung nur je einmal vorgenommen wird, oder? Der String (bzw. das Array) enthält nach der ersten Ersetzung nämlich keine Kommata mehr.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
~/perl/test> cat tr_vs_s2.pl
#!/usr/bin/perl
use Benchmark qw(:all);
my $string = 'Hallo, Welt blub blub, foo, bar.' x 10_000;
cmpthese( 10_000, {
   'regex' => sub { (my $new = $string) =~ s/,//g; },
   'trans' => sub { (my $new = $string) =~ tr/,//d },
});


~/perl/test> perl tr_vs_s2.pl
       Rate regex trans
regex 66.7/s    --  -78%
trans  300/s  350%    --



Oder wie die Ingenieure sagen: "Wer misst, misst Mist."


PS: Okay, renee hat's ähnlich gemacht.
Crian
 2006-08-23 18:42
#69123 #69123
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Die Originalfrage klang nicht danach, diesen Prozeß auf tausende von Daten anzuwenden =)
Aber ihr habt natürlich schon recht, tr ist da einfach schneller.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
sid burn
 2006-08-23 18:42
#69124 #69124
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Quote
Dir ist schon klar, dass in deinen beiden Benchmarks die Ersetzung nur je einmal vorgenommen wird, oder? Der String (bzw. das Array) enthält nach der ersten Ersetzung nämlich keine Kommata mehr.

Uh, daran habe ich gar nicht mehr dran gedacht. :(

Dachte eher das in dem speziellen Fall von 1 Zeichen ersetzen die "Erste Zeichen Optimierung" der Regex greift, und dies die Performance so stark steigert.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2006-08-23 13:38.