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