🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.perl
Article #39883

Re: grepowanie wg listy

#39883
From: Szymon Sokół
Date: Sat, 30 Oct 2004 12:00
35 lines
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-mail
References: <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