Funktion chop() in Perl

In der Programmiersprache Perl gibt es die eingebaute Funktion chop(). Diese Funktion wird bei der Arbeit mit Zeichenketten. Im einfachsten Fall wird die Funktion chop() löscht das Letzte Zeichen in der Variable das übergeben argument in diese Funktion.

Hier ist ein Beispiel:

▶ Run
#!/usr/bin/perl

my $string = 'ASDF';

chop($string);

print "'$string'";

Dieses Programm zeigt den Text 'ASD'.

Argumente

Wenn die Funktion chop nicht übertragen, keine Argumente, wird die Funktion arbeitet mit дефолтной Variable $_:

▶ Run
#!/usr/bin/perl

$_ = 123;

chop();

print "'$_'";

In diesem Fall, wenn in der Variablen $_ befindet sich undef verwendet und use warnings;, dann wird die Warnung:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

chop();
Use of uninitialized value $_ in scalar chop at script.pl line 6.

Funktion chop() übertragen werden können Skalare, Arrays, Hashes. Im Falle der Hash die Funktion arbeitet nur mit den Werten der Schlüssel, der Schlüssel selbst nicht ändern.

Ein argument einer Funktion chop() immer muss eine Variable sein. In diesem Fall, wenn versuchen Sie übergeben dieser Funktion die Zeile, dann wird der Fehler und die Ausführung des Programms wird gestoppt:

▶ Run
#!/usr/bin/perl

chop('ASDF'); # Error!
Can't modify constant item in chop at script.pl line 3, near "'ASDF')"
Execution of script.pl aborted due to compilation errors.

Der Rückgabewert

Funktion chop() immer einen String zurückgibt. Dies kann entweder eine leere Zeile ''oder die Zeile bestehend aus genau einem Zeichen.

Hier ist ein Beispiel der Situation, wenn chop() gibt eine leere Zeichenfolge zurück:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $var = '';

warn Dumper chop($var);
warn Dumper $var;

Und hier ist ein Beispiel für eine häufigere Situation, wenn chop() gibt einen String zurück genau aus einem Zeichen. Die Funktion gibt das Zeichen, die abgeschnitten von der Zeile:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $var = 'asdf';

warn Dumper chop($var);
warn Dumper $var;

Dieses Programm zeigt auf dem Bildschirm:

$VAR1 = 'f';
$VAR1 = 'asd';

Hier ein weiteres Beispiel einer Situation, wenn chop() gibt ein Zeichen.

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @arr = qw(abc def ghi);

warn Dumper chop(@arr);
warn Dumper \@arr;

Ausgabe des Programms:

$VAR1 = 'i';
$VAR1 = [
          'ab',
          'de',
          'gh'
        ];

Funktion chop() Schnitt das Letzte Zeichen bei allen Elementen in einem array, aber zurückgegeben nur ein Zeichen, das Letzte abgeschnitten.

Die offizielle Dokumentation

Hier ist die Ausgabe des Befehls perldoc -f chop:

       chop VARIABLE
       chop( LIST )
       chop    Chops off the last character of a string and returns the
               character chopped.  It is much more efficient than "s/.$//s"
               because it neither scans nor copies the string.  If VARIABLE is
               omitted, chops $_.  If VARIABLE is a hash, it chops the hash's
               values, but not its keys.

               You can actually chop anything that's an lvalue, including an
               assignment.

               If you chop a list, each element is chopped.  Only the value of
               the last "chop" is returned.

               Note that "chop" returns the last character.  To return all but
               the last character, use "substr($string, 0, -1)".

               See also "chomp".

Verwandte Themen

Andere Artikel