Jasmin: Suchen und Ersetzen

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

  1. 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ß

    --
    Selfcode: fo:| ch:{ rl:( br:> n4:~ ie:% mo:} va:) de:< zu:| fl:( ss:) ls:> js:{
    1. 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

  2. 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.

    --
    水-金-地-火-木-土-天-海-冥