🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: wyraz za, wyraz przed

#39912
From: Maciej Misiak
Date: Wed, 03 Nov 2004 07:23
47 lines
2251 bytes
No to na poczatek kilka uwag: jesli wczytujesz linie do zmiennej $linia to po 
pierwsze linijka
$line = 0
jest niepotrzebna. Po drugie w petli zaraz po wczytaniu kazdej linii zwiekszasz 
zmienna $line o 1. Perl w takim przypadku zaczyna traktowac to, co w zmiennej 
$line za liczbe i poniewaz na poczatku nie ma zadnych cyfr, to konwertuje ja do 
wartosci 0. Dodaje jedynke i zmienna $line zamiast ciagu znakow zawiera wartosc 
1, w ktorej nijak nie ma prawa wystapic ciag z regexpa. Jesli chcesz znac numer 
linii w pliku, ktora wlasnie odczytales, to uzyj zmiennej $., ktora ta dana 
posiada.
Sprobuj tak:

> $word = 'nie';
> while ( $line = <INP>)
> {
>     while( $line =~  /(^|([^\s]+\s))\s*${word}((\s+[^\s]+)|(\s*$))/g )
>     {
>         printf("word in lne ${line}: $& \n");
>     }
> }

I u mnie jesli plik wyglada tak:

-poczatek pliku-
Zbyszek Malec       Ustronie 104         gg: 2756100
nie     nie     nie
tak, tak. tak, taaak.
nie tak nie
tak nie tak nie
-koniec pliku-

to wynik wyglada tak:
word in lne nie     nie     nie
: nie     nie
word in lne nie tak nie
: nie tak
word in lne tak nie tak nie
: tak nie tak

I jesli bedziesz mial uwagi co do tego, ze w drugiej linii jest znalezione 
tylko jedno 'nie' to jeszcze pogadamy o assertach :)

pzdr
Grizzley

-- 
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Technical Details
Message-ID: <42c6.000007e4.41888778@newsgate.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsgate.onet.pl!niusy.onet.pl
References: <cm8pa3$3t4$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!newsgate.onet.pl!niusy.onet.pl
From: "Maciej Misiak" <grizzleyWYTNIJTO@op.pl>
Newsgroups: pl.comp.lang.perl
Subject: Re: wyraz za, wyraz przed
Date: 3 Nov 2004 08:23:38 +0100
Organization: Onet.pl SA
Lines: 47
Message-ID: <42c6.000007e4.41888778@newsgate.onet.pl>
References: <cm8pa3$3t4$1@inews.gazeta.pl>
NNTP-Posting-Host: newsgate.onet.pl
Mime-Version: 1.0
X-Trace: newsgate.test.onet.pl 1099466618 22306 213.180.130.18 (3 Nov 2004 07:23:38 GMT)
X-Complaints-To: abuse@onet.pl
NNTP-Posting-Date: 3 Nov 2004 07:23:38 GMT
X-Mailer: http://niusy.onet.pl
X-Forwarded-For: 217.153.136.40, 157.25.5.69, 192.168.243.38
X-User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit