🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#52376
Author: piecia aka dracorp
Date: Sun, 29 Jan 2012 15:08
34 lines
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