Zase ten perl ...
Honza Pazdziora
adelton na informatics.muni.cz
Úterý Duben 1 13:51:28 CEST 1997
> >
> > open(MAIN,"$file") || die $!;
> > @main = <MAIN>;
> > close(MAIN);
> >
> > open(MAIN,">$file") || die $!;
> > foreach $main_line (@main) {
> > if ($main_line =~ /$pozn/)
> > {
> > print MAIN "$main_line";
> > print MAIN " $num \n";
> > }
> > else
> > { print MAIN "$main_line"; }
> > }
> > close(MAIN);
> >
> >Chtel bych, aby tento kod :
> >1) vyhledal v souboru $file radek s obsahem $pozn (coz ucini)
> >2) az ho najde, aby ho prepsal jim samym (coz ucini)
> >3) prepsal nasledujici radek velicinou <tab>$num<tab> (coz NEucini) - ucini
> >to, za zapise <tab>$num<tab> PRED nasledujici radek (=vlozi radek s
> >hodnotou <tab>$num<tab> za radek s @pozn :-((((
Resp. za radek s $pozn :-(
> 1) ten program dela presne to co ma (zkuste se vzdycky nejdriv zamyslet,
> nez to nekam poslete)
Spravne, program vzdycky dela presne to, co rika jeho zdrojak, ze ma
delat.
> 2) pokud nechcete aby tam byl ten radek nasledujici za "$pozn", je treba ho
> nejspis odstranit aby se netisknul; treba:
>
> ..
> {
> print MAIN "$main_line";
> shift @main;
> print MAIN " $num \n";
> }
> ..
No nevim, to zadani neni moc presne. Me napoprve napadl tento one-liner
perl -i -ne 'print ($dont ? "krtek\n" : $_ ); $dont = 0; $dont = 1 if /jezek/;'
ktery ale da ponekud jiny vysledek, nez ta tvoje uprava. Protoze co
kdyz se jezek vyskytuje ve dvou radcich po sobe? Ja nahradim i ten
radek za druhym vyskytem, protoze ho testuju, zatimco tim shiftem uz
se na neho nedostanes. Coz muze byt vyhoda i nevyhoda, kdo vi.
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
I can take or leave it if I please
------------------------------------------------------------------------
Další informace o konferenci Linux