Мне нужна помощь относительно Perl хэш массива - PullRequest
0 голосов
/ 02 июля 2019

У меня есть хэш массива и список двух переменных -1 и 1-скалярное значение

Как мне это сделать?

Я хочу две вещи из этого. Сначала список для каждого ключа. Во-вторых, мне нужно $ b, чтобы иметь значение последнего элемента массива каждого ключа

  %abc=(
        0=>[1,2,3],
        1=>[1,5]
        );
    @a;
    $b;

для ключа 0 мне нужно, чтобы @a имел [1,2], а для ключа 1 мне нужно, чтобы @a имел [1]. для ключа 0 мне нужно $ b, чтобы иметь значение 3, а для ключа 1 мне нужно, чтобы $ b имел значение 5

Ответы [ 2 ]

3 голосов
/ 02 июля 2019

Как я понимаю, вы хотите, чтобы @a содержал все значения, кроме последнего, а $b - только последнее значение. Как насчет:

use feature 'say';
my %abc = (0 => [1,2,3], 1 => [1,5]);

for my $key (keys %abc) {
    my @a = @{$abc{$key}};
    my $b = pop @a;
    say "@a / $b"
}
2 голосов
/ 02 июля 2019

Я бы почти наверняка использовал что-то вроде другое решение здесь . Но вот другое решение, которое а) использует values() вместо keys() и б) использует reverse() для упрощения (?!) назначений. Не делай этого: -)

#!/usr/bin/perl

use strict;
use warnings;
use feature 'say';

my %abc = (0 => [1,2,3], 1 => [1,5]);

for (values %abc) {
  my ($b, @a) = reverse @$_;
  @a = reverse @a;

  say "@a / $b";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...