Article View: pl.comp.lang.perl
Article #39883Re: grepowanie wg listy
From: Szymon Sokół
Date: Sat, 30 Oct 2004 12:00
Date: Sat, 30 Oct 2004 12:00
35 lines
2237 bytes
2237 bytes
primoh <primoh_wytnij_@gazeta.pl> wrote:
: Witam
: Mam dwie tablice:
: @tab1 = ("Ragf", "Rasdf", "Fdefdg", "ASDCF");
: @tab2 = ("R","F");
: Chcialbym otrzymac tablice @tab3, ktora bedzie zawierala elementy @tab1
: pasujace do @tab2, czyli;
: @tab3 = grep(/R/,@tab1);
: @tab3 = grep(/F/,@tab1);
: ale w jednym wywolaniu grepa, cos na ksztalt:
: @tab3 = grep(/@tab2/,@tab1);
: Jak to zrobic?
Najpierw skonstruować regexp pasujący do wszystkich elementów @tab2, a potem
przyłożyć ten regexp grepem do @tab1:
$regexp = join("|", map { "\Q$_\E" } @tab2);
@tab3 = grep(/$regexp/, @tab1);
Dodatkowo, nie wiem, czy to kwestia przypadku, czy faktycznie te napisy z
@tab2 zawsze są *początkami* napisów z @tab1 - jeśli tak, to mocno poprawisz
wydajność grepa pisząc /^$regexp/ zamiast /$regexp/. I, jeżeli zawartość
@tab2 nie zmienia się pomiędzy kolejnymi wykonaniami (np. w pętli) tego
grepa, to daj opcję wymuszającą jednorazową kompilację regexpa: /$regexp/o
--
Szymon Sokół (SS316-RIPE) -- Network Manager B
Computer Center, AGH - University of Science and Technology, Cracow, Poland O
http://home.agh.edu.pl/szymon/ PGP key id: RSA: 0x2ABE016B, DSS: 0xF9289982 F
Free speech includes the right not to listen, if not interested -- Heinlein H
Technical Details
Message-ID:
<clvvpp$rc1$2@galaxy.uci.agh.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!agh.edu.pl!news.agh.edu.pl!not-for-mailReferences:
<clvu7i$oh4$1@inews.gazeta.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!agh.edu.pl!news.agh.edu.pl!not-for-mail
From: Szymon Sokół
<szymon@bastard.operator.from.hell.pl>
Newsgroups: pl.comp.lang.perl
Subject: Re: grepowanie wg listy
Date: Sat, 30 Oct 2004 12:00:57 +0000 (UTC)
Organization: University of Mining & Metallurgy
Lines: 35
Sender: Szymon Sokol <szymon@galaxy.uci.agh.edu.pl>
Message-ID: <clvvpp$rc1$2@galaxy.uci.agh.edu.pl>
References: <clvu7i$oh4$1@inews.gazeta.pl>
NNTP-Posting-Host: galaxy.uci.agh.edu.pl
Mime-Version: 1.0
X-Trace: galaxy.uci.agh.edu.pl 1099137657 28033 149.156.96.9 (30 Oct 2004 12:00:57 GMT)
X-Complaints-To: usenet@uci.agh.edu.pl
NNTP-Posting-Date: Sat, 30 Oct 2004 12:00:57 +0000 (UTC)
User-Agent: tin/1.6.2-20030910 ("Pabbay") (UNIX) (SunOS/5.8 (sun4u))
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit