|
| 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];
| |
|
|