|< 1 2 >| | 14 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
# Im VORNAMEN suchen: if (($ba_config{'search_prename'} == 1) and ($ba_config{'vorname_col'} <= $#top_headlines)) # zus.: Wenn Vorname und Nachname NICHT zusammen { #Titel + Vorname + Namensvorsatz: if ($ba_data{'vorname'} =~ /^\s*($search_pattern{'titel'})\s*(.*?)[ ]+($search_pattern{'name_vorsatz'})\s*$/sio) { ($ba_data{'titel'}, $ba_data{'vorname'}, $ba_data{'name_vorsatz'}) = ($1, $2, $3); push(@ba_info, 'Titel und Namensvorsatz im Vornamen'); } #Titel + Vorname: elsif ($ba_data{'vorname'} =~ /^\s*($search_pattern{'titel'})\s*(.*)\s*$/sio) { ($ba_data{'titel'}, $ba_data{'vorname'}) = ($1, $2); push(@ba_info, 'Titel im Vornamen'); } #Sekundärtitel + Vorname + Namensvorsatz: elsif ($ba_data{'vorname'} =~ /^\s*($search_pattern{'titel_secondary'})\s*(.*?)[ ]+($search_pattern{'name_vorsatz'})\s*$/sio) { ($ba_data{'titel_secondary'}, $ba_data{'vorname'}, $ba_data{'name_vorsatz'}) = ($1, $2, $3); push(@ba_info, 'Sekundärtitel und Namensvorsatz im Vornamen'); } #Sekundärtitel + Vorname: elsif ($ba_data{'vorname'} =~ /^\s*($search_pattern{'titel_secondary'})\s*(.*?)\s*$/sio) { ($ba_data{'titel_secondary'}, $ba_data{'vorname'}) = ($1, $2); push(@ba_info, 'Sekundärtitel im Vornamen'); }
1 2 3 4 5 6 7 8
#Vorname + Titel + Namensvorsatz: elsif ($ba_data{'vorname'} =~ /^\s*(.*?)[ ]+($search_pattern{'titel'})\s*$search_pattern{'name_vorsatz'}$/sio) { ($ba_data{'vorname'}, $ba_data{'titel'}, $ba_data{'name_vorsatz'}) = ($1, $2, $3); push(@ba_info, 'Namensvorsatz und Titel im Vornamen'); }
1 2 3 4 5 6 7 8
#Vorname + Titel + Namensvorsatz: elsif ($ba_data{'vorname'} =~ /^\s*(.*?)[ ]+($search_pattern{'titel'})\s*$search_pattern{'name_vorsatz'}$/sio) { ($ba_data{'vorname'}, $ba_data{'titel'}, $ba_data{'name_vorsatz'}) = ($1, $2, $3); push(@ba_info, 'Namensvorsatz und Titel im Vornamen'); }
1 2 3 4 5 6 7 8 9 10 11 12 13
# %search_pattern ist bereits bekannt, # dieser Teil steht irgendwo, so das er nur einmal ausgeführt wird my $regexp = qr/^\s*(.*?)[ ]+($search_pattern{'titel'})\s*$search_pattern{'name_vorsatz'}$/sio; # dann später dein vergleich #Vorname + Titel + Namensvorsatz: elsif ($ba_data{'vorname'} =~ $regexp) { ($ba_data{'vorname'}, $ba_data{'titel'}, $ba_data{'name_vorsatz'}) = ($1, $2, $3); push(@ba_info, 'Namensvorsatz und Titel im Vornamen'); }
1 2 3 4 5 6 7 8
#Vorname + Titel + Namensvorsatz: elsif ($ba_data{'vorname'} =~ /^\s*(.*?)[ ]+($search_pattern{'titel'})\s*$search_pattern{'name_vorsatz'}$/sio) { ($ba_data{'vorname'}, $ba_data{'titel'}, $ba_data{'name_vorsatz'}) = ($1, $2, $3); push(@ba_info, 'Namensvorsatz und Titel im Vornamen'); }
1 2 3 4 5 6 7 8 9 10 11 12 13
# %search_pattern ist bereits bekannt, # dieser Teil steht irgendwo, so das er nur einmal ausgeführt wird my $regexp = qr/^\s*(.*?)[ ]+($search_pattern{'titel'})\s*$search_pattern{'name_vorsatz'}$/sio; # dann später dein vergleich #Vorname + Titel + Namensvorsatz: elsif ($ba_data{'vorname'} =~ $regexp) { ($ba_data{'vorname'}, $ba_data{'titel'}, $ba_data{'name_vorsatz'}) = ($1, $2, $3); push(@ba_info, 'Namensvorsatz und Titel im Vornamen'); }
$a = 1000;
1 2 3 4 5 6 7
sub remove_wrapping_whitespaces { my $string = shift; $string =~ s/^\s+//; $string =~ s/\s+$//; return($string); }
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
#!/usr/bin/perl use strict; use warnings; use Benchmark ':all'; my $original = ' Bla Test Jetzt kommen nochmal Leerzeichen '; my $string; my $re1 = qr/^\s+/o; my $re2 = qr/\s+$/o; sub one { $string = $original; $string =~ s/$re1//o; $string =~ s/$re2//o; } sub two { $string = $original; $string =~ s/^\s+//; $string =~ s/\s+$//; } cmpthese (200000, { one => sub { &one; }, two => sub { &two; } } );
Quote---------- Perl ----------
Rate one two
one 261097/s -- -10%
two 290698/s 11% --
Output completed (2 sec consumed) - Normal Termination
$ba_data{'vorname'} =~ /^\s*(.*?)[ ]+($search_pattern{'titel'})\s*$search_pattern{'name_vorsatz'}$/sio
$ba_data{'vorname'} =~ /^\s*(.*?) +($search_pattern{'titel'})\s*($search_pattern{'name_vorsatz'})$/sio
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
# Im VORNAMEN suchen: my $vorname=$ba_data{'vorname'}; my $s_ttl=$search_pattern{'titel'}; my $s_vor=$search_pattern{'name_vorsatz'}; my $s_sec=$search_pattern{'titel_secondary'}; if (($ba_config{'search_prename'} == 1) and ($ba_config{'vorname_col'} <= $#top_headlines)) # zus.: Wenn Vorname und Nachname NICHT zusammen { #Titel + Vorname: if ($vorname =~ /^\s*($s_ttl)\s*(.*?)(?: +($s_vor))?\s*$/sio) { ($ba_data{'titel'}, $ba_data{'vorname'}) = ($1, $2); # + Namensvorsatz if($3 ne '') { $ba_data{'name_vorsatz'}=$3; push(@ba_info, 'Titel und Namensvorsatz im Vornamen'); } else { push(@ba_info, 'Titel im Vornamen'); } } #Sekundärtitel + Vorname: elsif ($vorname =~ /^\s*($s_sec)\s*(.*?)(?: +($s_vor))\s*$/sio) { ($ba_data{'titel_secondary'}, $ba_data{'vorname'}) = ($1, $2); # + Namensvorsatz if($3 ne '') { $ba_data{'name_vorsatz'}=$3; push(@ba_info, 'Sekundärtitel und Namensvorsatz im Vornamen'); } else { push(@ba_info, 'Sekundärtitel im Vornamen'); } } #Vorname + Titel + Namensvorsatz: elsif ($vorname =~ /^\s*(.*?) +($s_ttl)\s*($s_vor)$/sio) { ($ba_data{'vorname'}, $ba_data{'titel'}, $ba_data{'name_vorsatz'}) = ($1, $2, $3); push(@ba_info, 'Namensvorsatz und Titel im Vornamen'); } }
1 2 3 4 5 6 7 8
# %search_pattern ist bereits bekannt, # dieser Teil steht irgendwo, so das er nur einmal ausgeführt wird my $regexp = qr/^\s*(.*?)[ ]+($search_pattern{'titel'})\s*$search_pattern{'name_vorsatz'}$/sio; # dann später dein vergleich #Vorname + Titel + Namensvorsatz: elsif ($ba_data{'vorname'} =~ $regexp) {
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
use strict;
use warnings;
use Benchmark;
Benchmark::cmpthese(-1, {
bad_1 => \&rx_bad_1,
bad_2 => \&rx_bad_2,
good => \&rx_good
});
sub rx_bad_1 {
for (0..100000) {
# wird mit jedem schleifendurchlauf kompiliert?
my $rx = qr/\d+/o;
1 =~ /$rx/;
}
}
sub rx_bad_2 {
for (0..100000) {
# wird mit jedem schleifendurchlauf kompiliert
my $rx = qr/\d+/;
1 =~ /$rx/o;
}
}
sub rx_good {
# so ist es richtig, $rx wird ausserhalb der schleife zugewiesen
my $rx = qr/\d+/;
for (0..100000) {
# und in der schleife nur ein einziges mal kompiliert
1 =~ /$rx/o;
}
}
|< 1 2 >| | 14 Einträge, 2 Seiten |