Frank: Regulärer Ausdruck funktioniert nicht

Allen Weisen und Wissenden

folgendes Problem:

Das unterstehende Testprogramm soll einen String parsen und alles, was in eckigen Klammern steht, Html-formatieren. Das Programm läuft, macht aber außer dem Ausdruck von $abs im Urzustand nicht Sichtbares. Wenn ich die eckigen Klammern im String und im regulären Ausdruck durch andere Zeichen ersetze, tritt die gewünschte Ersetzungswirkung ein, nur stehen in den zu verarbeitenden Strings nun mal []...:-(
Wo liegt der/mein Fehler?

#!perl.exe -w

use strict;

my $abs='dfafdasfd[234]fsdfda[435]adfsaf[3563]dfa';

quotemeta $abs;

sub markAdds {
  
  $_[0]=~s/[(.)]/<b>$1</b>/g;
  my $rueck = $_[0];
}

$abs=markAdds($abs);

print $abs;

Vorneweg mal ein Dankeschön
  Frank

  1. Hallo Frank!

    Wenn ich das richtig ueberblicke, hast Du da zwei Fehler drin.

    sub markAdds {
      
      $_[0]=~s/[(.)]/<b>$1</b>/g;
      my $rueck = $_[0];
    }

    $abs=markAdds($abs);

    Erstens muss via return ein Rueckgabewert definiert werden, also return $_[0]. Oder wird $_[0] automatisch returned? Weiss ich jetzt nicht.
    Zweitens erlaubt in Deinem Regular expression die Klammerung nur EIN Zeichen zwischen den eckigen Klammern. Es sollte heissen: s/[(.*)]/....

    Also, bei 1. bin ich mir nicht ganz sicher, wie gesagt.

    Calocybe

    1. Hi Calocybe,

      thankx a lot, ich glaube, ich sollte mir ne' ganz dunkle Sonnenbrille kaufen. . statt * war's.
      Was die Rückgabe anbetrifft, wird die letzte Zuweisung zurückgegeben, wenn kein return erfolgt.

      schönes Wochenende
        Frank