Zivjo!

On Tue, 16 Feb 1999, Matija Grabnar wrote:

Najprej hvala za hiter odgovor :-]

> Ni cisto jasno, ali bi rad kompletno pobrisal vrstice, ki vsebujejo 
> dane izraze, ali samo pobrisal izraze.

Celotne vrstice. Pravzaprav bi rad naredil nekaj, kar bi vzelo
/var/log/messages, iz njega izbrisalo vse vrstice, v katerih je dolocena
beseda (ne zanima me nic v zvezi z, recimo, PPP-jem, pa ceprav je napaka)
in to prestavilo nekam drugam.

> $LOGFILE=$ARGV[0] ;   # Name of the file to be trimmed

Ali ni $ARGV[0] ime, s katerim je bila stvar pognana, v tem primeri
trimlog.pl? Prvi parameter je $ARGV[1],...Poleg tega mora to bit verjetno
@ARGV...

> @words=('ppp',        # Lines containing these words will be cut out.
>       'SLIP',
>       'chat',
>       ) ;
> 
> open(INFILE, $LOGFILE) or die ("Can't open $LOGFILE") ;
> open(OUTFILE, ${LOGFILE}.out) or die ("Can't open ${LOGFILE}.out") ;
> 
> if ($ARGV[1] ne "") { @words=(); $words[0]=$ARGV[1]; }
> 
> while (<INFILE>) {
>   trim($_,@words);
> }
> 
> close(<INFILE>) ;
> close(<OUTFILE>) ;
> unlink($LOGFILE) ;
> system("mv $LOGFILE.out $LOGFILE");

Hja, moj prejsnji primer je bil res cuden, vendar sem se hotel izogniti
temu...Ali ni v perlu nobene druge poti za izvrsit isto? Verjetno kaksen
IO::File itd... system() mi ne disi :-]

> 
> Ce hoces vrstice pometati ven, bo trim takle:
> 
> sub trim {
>   $line=shift @_;
>   foreach (@_) {
>       return if $line=~/$_/;
>   }
>   print $_;
> }

trim klicemo s ($_,@words), pri tem je $_ enak <INFILE>. Kaj se skriva v  
@_ ? $line-u preiredimo @_[0] in le tega zbrisemo (to naredi shift, ne?)
Hmm...ko premislim...ali so v @_ zdruzeni vsi parametri funkciji? To je
malo sitno za parsat, ce jih imas vec, recimo dva arraya neznane
velikosti...

> Dalo bi se narediti se kup drugih izboljsav, ampak to kdaj drugic...

Hehe, to je moja naloga :-]

lp,

-- 
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|Borut Mrak a.k.a. PyO-GEniC, a wannabe bofh, |
| [EMAIL PROTECTED], [EMAIL PROTECTED]   |
|    phone: +386 65 51248 and 61 267876       |
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
"The Army is a place where you get up early in the morning to be yelled at
by people with short haircuts and tiny brains."
                                                 -- Dave Barry

Reply via email to