Suchen und Ersetzen
Jasmin
- perl
0 Christian Bliß0 seth
1 迪拉斯
Hallo liebe Forumsgemeinde,
ich arbeite noch nicht lange mit Perl. Ich hab eine Datei (foo.xml) in der "***" vorkommt. Nun möchte ich diese Sternchen durch den kompletten Inhalt der Datei dd.base64 ersetzen. Wie gehe ich das an? Kann mir jemand _auch_ eine Lösung für die Kommandozeile (mit perl) geben? BS ist WinXP.
By the way, für was steht eigentlich der Asterisk vor einem Datei-Handle? Z.B.: while readline(*STDIN)
Grüße
Jasmin
Hallo,
ich arbeite noch nicht lange mit Perl. Ich hab eine Datei (foo.xml) in der "***" vorkommt. Nun möchte ich diese Sternchen durch den kompletten Inhalt der Datei dd.base64 ersetzen. Wie gehe ich das an?
Das geht recht einfach mit nem regulären Ausdruck:
$string_ohne_sternchen = s/\*{3}/$inhalt_dd.base64/gim;
Gruß
Christian Bliß
gudn tach!
$string_ohne_sternchen = s/\*{3}/$inhalt_dd.base64/gim;
wobei ich die beiden letzten modifier "i" und "m" fuer ueberfluessig halte.
prost
seth
Hey,
für was steht eigentlich der Asterisk vor einem Datei-Handle? Z.B.: while readline(*STDIN)
konkret dieses Beispiel ergibt keinen Sinn, STDIN geht auch.
Sterne vor Bezeichnern zeigen an, dass es sich um einen Typeglob handelt. Analog dazu kennst du schon $ für Skalare, @ für Arrays und % für Hashes. Man braucht diese Syntax nicht mehr, es sei denn, man ist sehr fortgeschrittener Programmierer und möchte die Symboltabelle direkt beackern.
Früher konnte/musste man folgende Sachen mit Typeglobs anstellen: Pass-by-Reference nach Funktionen, Erstellen von lokalen Filehandles, Aliasing von Bezeichnern. Ausnahmlos wurden diese Dinge schon vor etlichen Jahren durch bessere Syntax ersetzt.