WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 06.06.2005, 19:39   #1
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard PERL: variable befüllen

ich habe folgendes problem:

aus einer DB lese ich einen string aus, der z.b. so aussieht

"blablabla_$var_blabla"

diesen füge ich wo ein, davor habe ich jedoch der variable $var einen bestimmten wert gegeben, von dem ich nun möchte, daß er in dem eingefügten string aufgelöst aufscheint.

geht das?
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 11.06.2005, 20:20   #2
waquner
Jr. Member
 
Registriert seit: 01.01.2003
Alter: 40
Beiträge: 75


waquner eine Nachricht über ICQ schicken
Standard

in deinem beispiel löst der interpreter $var_blabl als variable auf nicht $var... richtig wäre also "blabla_$var"."_bla" ( den . gibts doch in perl auch nicht nur in php oder?)
____________________________________
zivi:blog - das weblog für österreichische zivis
waquner ist offline   Mit Zitat antworten
Alt 12.06.2005, 11:16   #3
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Die Frage ist wie Variabel es sein muss. Am einfachsten ist es, wenn als Variablenname nur z.B. "$var" vorkommt, und $var nur einmal im String vorkommt.
Das ginge in php mit:
Code:
$result=str_replace ( "_$var_", $var, "blablabla_$var_blabla");
Wenn der Variablenname unbekannt ist:
Code:
$varInDb="blablabla_$var_blabla";
$result="";
$startPos=strpos($varInDb,"_$");
if($startPos===false){
  $result="Keine Variable vorhanden";
} else {
  $endPos=strpos($varInDb,"_",$startPos);
  $varName=substr($varInDb, $startPos, $endPos - $startPos);
  $result=substr($varInDb, 0, $startPos) . $$varName . $substr($varInDb, $endPos);
}
Beim zweiten Codeblock müsstest du austesten wie perl bzw. php die Zeichen in Strings zählt (bei 0 beginnend, wo beginnt der Suchstring usw). Eventuell musst du z.B. bei $startPos noch 1 oder 2 dazuaddieren.

Ich kenn mich mit Perl leider nicht aus, vielleicht musst du mit unpack() und pack() arbeiten.
Strings ersetzen geht dort irgendwie mit s/ersetzeDas/durchDas
Du kannst dich auch mit folgenden Dingen spielen:
$varInDb=~/_$[a-zA-Z]+_/
$` sollte dann "blablabla" sein
$& sollte _$var_ sein
$' sollte blabla sein

Vielleicht helfen dir auch die Punkte 9-11 dort weiter: http://www.perl-archiv.de/perl/tutor...rl_start.shtml

hth,
Jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:13 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag