Danfix: Split() - Dynamisch

Kann ich die split()-Funktion auch dynamisch aufrufen, also z.B.:

my $IndexToken="|";

@array = split($IndexToken,$Text);

Das funzt bei mir nicht...

Es funktioniert nur:

@array = split(/|/, $Text);

Gibt es ne Möglichkeit, das Trennungszeichen variabel anzugeben?

  1. hi,

    versuchs mal so:

    $s = 'rolf|otto|erwin';
    $token = '|';
    @a = split /$token/, $s;
    print join "\n", @a, "\n";

    $s = 'rolf;otto;erwin';
    $token = ';';
    @a = split /$token/, $s;
    print join "\n", @a, "\n";

    Rolf

    --
    SELFforum - Das Tor zur Welt!
    Theoretiker: Wie kommt das Kupfer in die Leitung?
    Praktiker: Wie kommt der Strom in die Leitung?
    1. Sehr schön....funktioniert einwandfrei!

      Dankeschön!

      1. hi,

        nochewas:
        $s = 'rolf|otto|erwin';
        $token = '|';
        @a = split /\Q$token\E/, $s;
        print join "\n", @a, "\n";

        \Q          quote (disable) pattern metacharacters till \E

        Rolf

        --
        SELFforum - Das Tor zur Welt!
        Theoretiker: Wie kommt das Kupfer in die Leitung?
        Praktiker: Wie kommt der Strom in die Leitung?
  2. Moin Moin !

    Das erste Argument für Split ist kein String, sondern ein regulärer Ausdruck. Den kannst Du natürlich auch vorher einer Variablen zuweisen und später in split benutzen. Es gibt auch eine Funktion quotemeta, um für REs kritische Zeichen zu maskieren.

    Plan B, wenn es denn immer nur ein Zeichen sein soll: index() und substr()

    Mehr zu beiden Themen: perldoc perlfunc

    Alexander

    --
    Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".