8 Einträge, 1 Seite |
1
2
3
4
5
6
7
s/^.+;.+-(.+)-.+;.+$/$1/;
# s/// ersetze alles, was im ersten Teil gefunden wird, durch den zweiten
# ^.+; erkennt vom Anfang des Strings bis zum ersten Semikolon (^ = Anfang)
# .+- erkennt bis zum ersten Bindestrich
# (.+)- erkennt bis zum nächsten Bindestrich und speichert es in $1 ab
# .+; erkennt bis zum zweiten Semikolon
# .+$ erkennt den Rest ($ = Ende)
1 2 3
# zeilenweises einlesen, zeile steckt in $line # splitte am '-' und nehme nur das 2. Element $value = (split(/-/, $line))[1]
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
#!/usr/bin/perl use strict; use warnings; use Benchmark; use vars qw/$count @data $line/; $count = 1000000; @data = ( '10.177.178.83;gr-emattig-IP1;Edgar Mattig', '10.177.174.71;gr-akaraca-IP1;Adnan Karaca', '10.177.165.137 gr-skahlert-IP1 Stefan Kahlert', ); timethese( $count, { 'regex' => \&ME_regex, 'split' => \&ME_split, }); sub ME_regex { for $line ( @data ) { my ($val) = $line =~ m/-(.*?)-/; } } sub ME_split { for $line ( @data ) { my ($val) = (split(/-/, $line))[1]; } }
Quote$ perl timeit.pl
Benchmark: timing 1000000 iterations of regex, split...
regex: 35 wallclock secs (34.03 usr + 0.01 sys = 34.04 CPU) @ 29377.20/s (n=1000000)
split: 27 wallclock secs (26.37 usr + 0.00 sys = 26.37 CPU) @ 37921.88/s (n=1000000)
$
8 Einträge, 1 Seite |