Funktion chop() i Perl

I programmeringssproget Perl har en indbygget funktion chop(). Du kan bruge denne funktion, når man arbejder med strenge. I det enkleste tilfælde, funktion chop() fjerner det sidste tegn i en variabel der er en bestået argument i funktionen.

Her er et eksempel:

▶ Run
#!/usr/bin/perl

my $string = 'ASDF';

chop($string);

print "'$string'";

Dette program viser teksten 'ASD'.

Argumenter

Hvis funktionen chop ikke gives ingen argumenter, den fungerer med standard variable $_:

▶ Run
#!/usr/bin/perl

$_ = 123;

chop();

print "'$_'";

I dette tilfælde, hvis den variable $_ er undef og anvendes use warnings;, vil advarsel:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

I funktion chop() , kan du gå skalarer, arrays, hashes. I tilfælde af hash funktionen vil kun arbejde med værdier af nøgler, nøgler, sig vil ikke ændre sig.

Argumentet for en funktion chop() skal altid være variable. Hvis at forsøge at videregive denne funktion en snor, vil fejl og udførelsen af et program vil blive stoppet:

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

Return værdi

Funktion chop() altid returnerer en streng. Det kan enten være tom string '', eller en streng, der består af netop ét tegn.

Her er et eksempel på en situation, hvor chop() returnerer en tom streng:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $var = '';

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

Her er et eksempel på en mere hyppig situation er, når chop() returnerer en streng af netop en symbol. Funktionen returnerer det tegn, der blev skåret fra linje:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $var = 'asdf';

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

Dette program vil vise:

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

Her er et andet eksempel på en situation, hvor chop() returnerer et enkelt tegn.

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @arr = qw(abc def ghi);

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

Outputtet af programmet:

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

Funktion chop() afbrød sidste tegn fra alle elementer i arrayet, men vendte tilbage den eneste karakter, der var skåret sidste.

Officiel dokumentation

Her er outputtet af kommandoen 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".

Relaterede emner

Andre artikler