/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Replace variable som er tekst en anden fil~
Fra : John Doe


Dato : 04-12-00 07:52

Well, jeg ku' ikke finde en passende overskrift til denne.
Jeg har en test fil som en gang immellem inkludere variable navn i form af
"$variable". Når jeg indlæser filen til et array i mit script og printe
arrayet på skærm ser jeg "$variable" i stedet for dens værdi. $variable er
defineret i mit script før array kald. Sådan ser det teoretisk ud:

teks filen inkluderer f.eks linjerne:
"et eksampel
$variable you say"


$variable = 'whatever';
open (FIL, "tekst_fil.txt");
@array = <FIL>;
close FIL;
print @array;

Outputtet ser sådan ud:

"et eksampel
$variable you say" istedetfor det jeg gerne vil have, altså:

"et eksampel
whatever you say"

Kan man skifte variable navn med dens værdi?? Hvis ja hvad med hvis der er
flere forkellige variable som skal skiftes ud med deres værdier?



 
 
Thomas Rokamp (04-12-2000)
Kommentar
Fra : Thomas Rokamp


Dato : 04-12-00 12:13

Jeg mener du kan bruge eval funktionen her :

$variable = 'whatever';
open (FIL, "tekst_fil.txt");
@array = eval(<FIL>);
close FIL;
print @array;


> Kan man skifte variable navn med dens værdi?? Hvis ja hvad med hvis der er
> flere forkellige variable som skal skiftes ud med deres værdier?

Funktionen parser teksten inden den bliver lagt i array, dvs. hvis den
støder på kendte variable, bliver disse sat ind i stedet for $......

Jeg har ikke testet ovenstående, men det burde virke

Mvh.
Thomas Rokamp



John Doe (04-12-2000)
Kommentar
Fra : John Doe


Dato : 04-12-00 22:36


Thomas Rokamp skrev i meddelelsen <90fu8b$6bp$1@news.inet.tele.dk>...
>Jeg mener du kan bruge eval funktionen her :
>
>$variable = 'whatever';
>open (FIL, "tekst_fil.txt");
> @array = eval(<FIL>);
>close FIL;
>print @array;


Well, det der med eval() virkede ikke. Det virker vist i andre sammenhænge.
Men eksamplet som Peter har vist virker udmærket. Tak for svaret..



N/A (05-12-2000)
Kommentar
Fra : N/A


Dato : 05-12-00 12:44



Thomas Rokamp (05-12-2000)
Kommentar
Fra : Thomas Rokamp


Dato : 05-12-00 12:44

Tja... jeg har ikke tid til at teste de ting jeg skriver. Kan min hjælp i
nogle tilfælde bruges til noget må det være tilfredsstillende!

"Peter J. Acklam" <jacklam@math.uio.no> wrote in message
news:cxcwvdgp3a1.fsf@masterblaster.uio.no...
> "Thomas Rokamp" <crax@mail.com> writes:
>
> > Jeg mener du kan bruge eval funktionen her :
> >
> > $variable = 'whatever';
> > open (FIL, "tekst_fil.txt");
> > @array = eval(<FIL>);
> > close FIL;
> > print @array;
> >
> > Funktionen parser teksten inden den bliver lagt i array, dvs. hvis den
> > støder på kendte variable, bliver disse sat ind i stedet for $......
> >
> > Jeg har ikke testet ovenstående, men det burde virke
>
> Du burde ha testet det. Det er da trivielt å se at
>
> et eksampel
> $variable you say
>
> ikke er gyldig Perl-kode?
>
> Peter
>
> --
> $\="\n";$_='The quick brown fox jumps over the lazy dog';print +(split
> //)[20,5,24,31,3,36,14,12,31,1,2,11,9,23,33,29,35,15,32,36,7,8,28,29];



John Doe (05-12-2000)
Kommentar
Fra : John Doe


Dato : 05-12-00 15:37

Det var ikke en klage. Jeg ville bare sige det. jeg vidste ikke hvad
eval() brugtes til. Nu har jeg læst til (pga din henvendelse) og ved at det
kan bruges i mange andre sammenhænge. Tak for hjælpen..




Thomas Rokamp (08-12-2000)
Kommentar
Fra : Thomas Rokamp


Dato : 08-12-00 12:07

Det var også et svar på indlægget fra Peter J. Acklam...

God jul!

"John Doe" <fatih@ofir.dk> wrote in message
news:T37X5.17639$zs.453753@twister.sunsite.auc.dk...
> Det var ikke en klage. Jeg ville bare sige det. jeg vidste ikke hvad
> eval() brugtes til. Nu har jeg læst til (pga din henvendelse) og ved at
det
> kan bruges i mange andre sammenhænge. Tak for hjælpen..
>
>
>



Peter J. Acklam (08-12-2000)
Kommentar
Fra : Peter J. Acklam


Dato : 08-12-00 12:44

"John Doe" <fatih@ofir.dk> writes:

> Det var ikke en klage. Jeg ville bare sige det. jeg vidste ikke hvad
> eval() brugtes til. Nu har jeg læst til (pga din henvendelse) og ved at det
> kan bruges i mange andre sammenhænge. Tak for hjælpen..

Men vær forsiktig med å bruke eval() på kode som du ikke kjenner!!
Og aldri bruk eval() på kode som er gitt av en bruker uten å
sjekke koden nøye først.

Du kan jo tenke deg selv dersom

$code = 'system "rm -rf /"'; # unix
$code = 'system "deltree /y c:\\"'; # windows

og du tar en eval() på $code...

Peter

--
$\="\n";$_='The quick brown fox jumps over the lazy dog';print +(split
//)[20,5,24,31,3,36,14,12,31,1,2,11,9,23,33,29,35,15,32,36,7,8,28,29];

Peter J. Acklam (04-12-2000)
Kommentar
Fra : Peter J. Acklam


Dato : 04-12-00 11:55

"John Doe" <fatih@ofir.dk> writes:

> Well, jeg ku' ikke finde en passende overskrift til denne.
> Jeg har en test fil som en gang immellem inkludere variable navn i form af
> "$variable".
> [...]
> Kan man skifte variable navn med dens værdi??

Løsningen her er å bruke eval(), eventuelt /e «regex modifier»:

$variable = 'whatever';
open (FIL, "tekst_fil.txt") || die ("can't open file: $!\n");
while (<FIL>) {
s{(\$\w+)}{$1}gee;
print;
}
close FIL;

Den første /e erstatter $1 med $variable, og den andre /e er
erstatter $variable med «whatever».

Peter

--
$\="\n";$_='The quick brown fox jumps over the lazy dog';print +(split
//)[20,5,24,31,3,36,14,12,31,1,2,11,9,23,33,29,35,15,32,36,7,8,28,29];

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408921
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste