Article View: pl.comp.lang.perl
Article #52376Wyszukiwanie w łańcuchu a flaga /g
From: 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
Technical Details
Message-ID:
<pan.2012.01.29.15.13.01@dracorp.one.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: piecia aka dracorp <imie.nazwisko@wp.eu>
Newsgroups: pl.comp.lang.perl
Subject: Wyszukiwanie w łańcuchu a flaga /g
Date: Sun, 29 Jan 2012 15:08:14 +0000 (UTC)
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 34
Message-ID: <pan.2012.01.29.15.13.01@dracorp.one.pl>
NNTP-Posting-Host: 62.108.180.232
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1327849694 9143 62.108.180.232 (29 Jan 2012 15:08:14 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Sun, 29 Jan 2012 15:08:14 +0000 (UTC)
X-User: dracorp
User-Agent: Pan/0.135 (Tomorrow I'll Wake Up and Scald Myself with Tea; GIT 2d67c56 git://git.gnome.org/pan2)
X-Face: &O(G<?G0x[)D}ri@2r:nnqjWG"C%v#'ES"T|m>Gaw3JWL>[XKRh^(75y8=DvLC1QXn9Vtc= !QWAS}|{A97ADU]x0*KE-Z>sKRlHMqyJ7c!=^wW,f#RXJ%e_@(U2YaNV10ucCf
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit