Fonction chop() en Perl

Dans le langage de programmation Perl, il ya une fonction intégrée chop(). Cette fonction est utilisée lors de la manipulation de chaînes. Dans le cas le plus simple de la fonction chop() supprime le dernier caractère de la variable qui est transmis par l'argument de cette fonction.

Voici un exemple:

▶ Run
#!/usr/bin/perl

my $string = 'ASDF';

chop($string);

print "'$string'";

Ce programme affiche le texte 'ASD'.

Les arguments

Dans ce cas, si la fonction chop n'est pas transmises à aucun argument, la fonction travaille avec дефолтной variable $_:

▶ Run
#!/usr/bin/perl

$_ = 123;

chop();

print "'$_'";

Dans ce cas si la variable $_ est undef et utilisé use warnings;, ce sera un avertissement:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

Dans la fonction chop() , vous pouvez transférer des scalaires, des tableaux, des tables de hachage. Dans le cas de hachage la fonction fonctionne uniquement avec les valeurs de clés, vous les clés ne sont pas modifiées.

L'argument de la fonction chop() doit toujours être variable. Dans ce cas, si essayer de passer cette fonction de la chaîne, ce serait une erreur et l'exécution du programme sera arrêté:

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

La valeur de retour

La fonction chop() renvoie toujours une chaîne. Il peut être soit vide la chaîne de '', soit une chaîne comprenant exactement un caractère.

Voici un exemple d'une situation où chop() renvoie une chaîne vide

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $var = '';

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

Et voici un exemple plus fréquente de la situation, quand chop() renvoie une chaîne contenant exactement un symbole. La fonction retourne le symbole qui a été coupé à la longueur de la ligne:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $var = 'asdf';

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

Ce programme affiche:

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

Voici un autre exemple d'une situation où chop() renvoie à un caractère.

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @arr = qw(abc def ghi);

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

La sortie du programme:

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

La fonction chop() a coupé le dernier caractère de tous les éléments dans le tableau, mais a regagné d'un seul caractère, celui qui a été coupé le dernier.

La documentation officielle

Voici la sortie de la commande 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".

Thèmes connexes

Autres articles