|
|||||||||||||||||||||||||||
On Mon, 20 Mar 2000, René Seindal wrote:
> Christian Borup wrote:
> >
> > René Seindal wrote:
> >
> > > Peter Toft wrote:
> > > >
> > > > perl -i -pe 's/andeby/gåserød/gi'
> > > > er en sød lille ordre til at erstatte alle andeby med gåserød.
> > > >
> > > > Men hvad gør jeg midt i et Perl program, hvis jeg har
> > > > filnavn : $filename
> > > > frastreng : $froms
> > > > tilstreng : $tos
> > > >
> > > > og vil erstatte alle $froms med $tos i $filename
> > > > resultatet skal også efterlades i $filename.
> > >
> > > system("sed -e 's/$froms/$tos/g' < $filename >$filename+ && mv
> > > $filename+ $filename");
> >
> >[...]
> >
> > Du kunne da i det mindste kalde perl, og lade være
> > med at bruge shell'en, altså:
> >
> > system("perl", "-pi", "-e", "s/$froms/$tos/g", $filename);
>
> Jeg tror, at en sh og sed starter hurtigere end perl, der er et ret
> stort program. Jeg kan ikke se at denne løsning skulle være bedre, med
sh er på linux det samme som bash. På min maskine:
-rwxr-xr-x 1 root root 565386 May 25 1999 /bin/bash
-rwxr-xr-x 1 root root 54520 Apr 13 1999 /bin/sed
-rwxr-xr-x 2 root root 521492 Apr 13 1999 /usr/bin/perl
Alene ud fra den grund er det en bedre ide at starte perl.
Men det kan også være andre grunde: Jeg selv haft et ligende simpelt
problem, som jeg lige ville prøve at køre bruge sed på. Datamængden var 10
MB. Perl brugte ca. 1 MB RAM og tog ca. 12 sek. Sed brugte ca. 10 MB RAM
og tog ca. 1 minut.
Så selv hvis problemet er simpelt, kan perl godt være den rigtige løsning.
/Ole
--
Livet er for kort til fsck -- reiserfs
|
||||||||||||||
|
||||||||||||||