12
votes

Perl - Comment extrayez-vous tous les éléments d'un tableau sauf le dernier?

Je dois extraire tous les éléments dans un tableau, sauf le dernier et les stocker dans un scalaire pour une utilisation ultérieure. Au début, je pensais que cela serait possible en utilisant des tranches de tableau, mais il semble que vous ne puissiez pas compter en arrière. Par exemple:

my $foo = ($bar[-2..0]);  


0 commentaires

4 Réponses :


2
votes
my @x = (1, 2, 3);
print "@x[-@x .. -2]";

0 commentaires

19
votes

My $ foo = joint ',', @bar [0. $ $ # bar-1];

concaténera (par virgule) tous les éléments du tableau @bar sauf le dernier dans FOO.

Cordialement

rbo


0 commentaires

2
votes

Cela stockera tous les éléments de tableau, sauf pour le dernier, dans un scalaire. Chaque élément de tableau sera séparé par un seul espace.

use strict;
use warnings;

my @nums = 1 .. 6;
my $str = "@nums[0 .. $#nums - 1]";
print $str;

__END__

1 2 3 4 5


1 commentaires

Merci pour la bonne réponse, mais non, je voudrais les stocker comme un scalaire que je souhaite transformer le nom de famille "ForName Initiername (S)" dans "nom de famille, prénom Initial (s)" et avez déjà extrait le nom de famille et ajouté une virgule à celle-ci. , ne pouvait tout simplement pas être prénom et initial (s).



11
votes
my @foo = splice( @bar, 0, -1 );

2 commentaires

Merci pour la réponse rapide, je me souviendrai des exemples pour plus tard, ils pourraient être utiles


Je pense que pop est un peu plus agréable que l'épissure pour éliminer le dernier élément :)