# Perl - Zeichenketten

### Operatoren

- "`.`" Verkettung von Strings
- "`x`" Vervielfachung von Zeichenketten

Beispiel :

    #!/usr/local/bin/perl -w

    $a = "A";
    $b = ".";

    $c = $a.$b;
    print "$c\n";

    $c = $c x 2;
    print "$c\n";

    $c .= "*";
    print "$c\n";

    $c = $c x 3;
    print "$c\n";

    A.
    A.A.
    A.A.*
    A.A.*A.A.*A.A.*

### Vergleiche

- "`eq`" liefert true bei Gleichheit
- "`ne`" liefert true bei Ungleichheit
- "`gt`" liefert true, falls linkes Argument größer als rechtes Argument
- "`lt`" liefert true, falls linkes Argument kleiner als rechtes Argument
- "`ge`" liefert true, falls linkes Argument größer oder gleich rechtem Argument
- "`le`" liefert true, falls linkes Argument kleiner oder gleich rechtem Argument
- "`cmp`" liefert -1,0,1 je nachdem, ob das linke Argument kleiner,gleich oder größer als das rechte Argument ist

Achtung: Diese Vergleiche gelten nur im String-Kontext, d.h., wenn zwei Zeichenketten verglichen werden. Zum Vergleich von Zahlen sehen die Operatoren anders aus.

### Funktionen

- `chop()` Abschneiden des letzten Zeichens

  Hiermit wird das letzte Zeichen vom übergebenen String entfernt und als Funktionswert zurückgegeben.

      #!/usr/local/bin/perl -w

      $a = 'Perl';
      chop($a);
      print $a;

      Per

  Meistens wird `chop` dazu verwendet, den Zeilenvorschub am Ende einer Zeile abzuschneiden; hierfür eignet sich jedoch `chomp()` besser.

- `chomp()` Abschneiden von Eingabetrennzeichen

  Standardmäßig entfernt `chomp()` einen Zeilenvorschub ("\n") am Ende eines Strings, sofern ein solcher vorhanden ist und gibt die Anzahl der abgeschnittenen Zeichen zurück. `chomp()` sollte insbesondere dann gegenüber `chop()` bevorzugt werden, wenn nicht ganz sicher ist, ob die Zeichenkette am Ende einen Zeilenvorschub besitzt oder nicht.

  Eigentlich entfernt `chomp()` die Zeichenkette am Ende eines Strings, die in der Variablen `$/` steht (Standardwert: \n). Ist `$/` leer, so werden alle Zeilenvorschübe abgeschnitten.

      #!/usr/local/bin/perl -w

      $string = "Hallo\n";
      chomp($string);            # Abschneiden von \n

      $string = "Hallo";
      chomp($string);            # keine Änderung von $string

      $/ = 'lo';
      $string = "Hallo";
      chomp($string);            # $string ist nun "Hal"

      $/ = '';
      $string = "Hallo\n\n\n";
      chomp($string);            # Entfernen aller \n

- `length()` Länge eines Strings

  Hiermit wird die Länge einer Zeichenkette ermittelt (einschließlich aller Sonderzeichen).

      #!/usr/local/bin/perl -w

      $zeile = "Anzahl\tPreis\n";
      print length($zeile)."\n";

      13

- `join()` Verkettung

  Das erste Argument ist hierbei eine Zeichenkette, die zwischen die nachfolgenden Strings beim Aneinanderhängen gesetzt wird.

      #!/usr/local/bin/perl -w

      $zeile = join('-','a','b','c','d');
      print $zeile."\n";

      a-b-c-d

- `split()` Aufteilung

  Hiermit kann eine Zeichenkette an bestimmten Stellen aufgetrennt werden. Die jeweilige Trennstelle gibt ein Suchmuster im ersten Argument an (siehe Reguläre Ausdrücke).

      #!/usr/local/bin/perl -w

      $zeile = "a-b-c-d";
      $a = split(/-/,$zeile);     # Anzahl der Elemente
      @b = split(/-/,$zeile);     # Array der einzelnen Teilstrings

      foreach $x (@b) { print "$x\n" }
      print "$a\n";

      a
      b
      c
      d
      4

  Im skalaren Kontext (Variable `$a`) gibt `split` die Anzahl der gebildeten Teilstrings zurück (hier: 4). Die Teile selber können aber auch direkt in ein Array gelesen werden (Array `@b` mit den vier Elementen '`a`', '`b`', '`c`' und '`d`'). Um die Anzahl der Teilstrings zu begrenzen, kann als drittes Argument noch eine Zahl angegeben werden, die die maximale Anzahl der gebildeten Stücke darstellt.

      #!/usr/local/bin/perl -w

      $zeile = "a-b-c-d";
      @c = split(/-/,$zeile,2);

      foreach $x (@c) { print "$x\n" }

      a
      b-c-d

  In diesem Beispiel enthält `@c` am Ende nur die beiden Elemente '`a`' und '`b-c-d`'.

Autor: Eike Grote | Letzte Änderung: 03.11.2004