Einsetzen einer Variable in einen Platzhalter
Daniel_T
- perl
Hallo!
Möchte folgendes realisieren:
Ich hab eine Textdatei, die les ich aus, und es sind irgendwo im Text "Keywords", die ich beim auslesen und vor dem ausgeben austauschen möchte.
Angenommen, ich hab in einer Zeile "Hallo $keyword_name" stehen, und ausgegeben werden soll anstatt $keyword_name ein Name, denn ich in einer Variable hab.
Ein reines $line = s/$keyword/$variable/ funktioniert nicht, da dann wirklich "$variable" und nicht dessen Inhalt im ausgegebenen Text steht.
Wie kann ich es dann machen?
Danke!
Daniel
Hi!
Wie kann ich es dann machen?
eval() benutzen, was aber IMHO recht unschön ist...
Anders läßt sich dein Problem nicht angehen?
Gruß, rob
Hi!
Hallo!
eval() benutzen, was aber IMHO recht unschön ist...
Anders läßt sich dein Problem nicht angehen?
Werd ich versuchen. Naja, der Ablauf ist so Quelle-Textdatei -> Programm -> Ausgabe, und im Programm weiß ich erst, was an den diversen Stellen im Text stehen soll.
Gruß, rob
Baba Daniel
Angenommen, ich hab in einer Zeile "Hallo $keyword_name" stehen, und ausgegeben werden soll anstatt $keyword_name ein Name, denn ich in einer Variable hab.
Ein reines $line = s/$keyword/$variable/ funktioniert nicht, da dann wirklich "$variable" und nicht dessen Inhalt im ausgegebenen Text steht.
suchst du evtl. sowas wie HTML::Template?
wenn es wirklich nur way einfach sein soll, läßt sich das einfacher mit einem HASH realisieren.
In etwa so:
#!/usr/bin/perl -w
use strict;
my $text = <<"TXT";
Hallo %NAME%!
TXT
my %hash =(
NAME => 'Struppi'
);
$text =~ s/%([^%]+)%/$hash{$1}/g;
print $text;
Struppi.
wenn es wirklich nur way einfach sein soll, läßt sich das einfacher mit einem HASH realisieren.
In etwa so:
#!/usr/bin/perl -w
use strict;
my $text = <<"TXT";
Hallo %NAME%!
TXTmy %hash =(
NAME => 'Struppi'
);$text =~ s/%([^%]+)%/$hash{$1}/g;
print $text;
Das ist genau das, was ich gesucht hab, funktioniert blendend :)
> Struppi.
Vielen Dank!
Daniel