Thread View: pl.comp.lang.perl
1 messages
1 total messages
Started by piecia aka dracorp
Sun, 29 Jan 2012 15:08
Wyszukiwanie w łańcuchu a flaga /g
Author: piecia aka dracorp
Date: Sun, 29 Jan 2012 15:08
Date: Sun, 29 Jan 2012 15:08
34 lines
2103 bytes
2103 bytes
Witam
Mam łańcuch utworzony z polecenia:
#v+
$lanuch = join "\n",@tablica;
#v-
@tablica zawiera listę plików.
Wyszukuję w tym łańcuch nazw plików przez:
#v+
$lanuch =~ m{^\Q$nazwa_pliku\E$}xms
#v-
I działa. Jeśli jednak dodam flagę /g żeby móc odczytać pozycję po
ostatnim dopasowaniu, za pomocą funkcji pos(), to przestaje mi wyszukiwać.
Pytanie dlaczego? Perl 5.14.2.
Co ciekawe, wcześniej miałem jakoś inaczej skonstruowany kod i z flagą /g
działało mi to. Delikatna zmiana kodu powodowała, że łańcuch nie był
dopasowywany. Jak znajdę ten fragment to podeślę.
Przy okazji jak mogę przyśpieszyć wyszukiwanie w długim łańcuchu lub
dużej tablicy?
Tablica zawiera 514058 wierszy i pod postacią pliku zajmuje 27MB.
A sprawdzane są pliki, dokładnie nazwy plików, zwrócone przez funkcję find
z File::Find.
Przy niewielkich tablicach szybsze było wyszukiwanie grep/first. Ale przy
tej najlepiej mi się sprawdziło przerobienie do łańcucha i szukanie po
wyrażeniach ale zakotwiczonych(^$).
--
piecia aka dracorp
pisz na: piotr kropka rogoza at wp kropka eu
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads