Vous pouvez utiliser shift
dans un while
boucle.
#!/usr/bin/perl
my @coords = qw/1 5 2 6 3 8 6 12 7 5/;
my ($x, $y);
while (@coords) {
$x = shift @coords;
$y = shift @coords;
# another shift to get triples
# Do something with $x, $y, ...
say "$x, $y";
}
La boucle while s'exécute jusqu'à ce que @coords
est vide. shift
récupère le premier élément et le supprime du tableau.
Évitez undef
en donnant une valeur par défaut :
Si vous essayez ci-dessus avec des triples, vous obtiendrez une erreur car il y aura des valeurs non définies dans la dernière exécution. $x
sera 5
et ensuite @coords
est vide.
Donnez donc une valeur par défaut en utilisant //
.
#!/usr/bin/perl
my @coords = qw/1 5 2 6 3 8 6 12 7 5/;
my ($x, $y, $z);
while (@coords) {
$x = shift @coords; # is defined!
$y = shift @coords // "<undef>";
$z = shift @coords // "<undef>";
# ...
}
N'utilisez pas ||
! Parce que shift @coords || "<undef>";
sera "<undef>"
si la valeur actuelle est évaluée à false ( 0
, ""
, ...).