Как я могу извлечь массив из двумерного массива в Perl? - PullRequest
1 голос
/ 14 октября 2010

Я еще раз забыл, как заставить $_ представлять массив, когда он находится в цикле двумерного массива.

foreach(@TWO_DIM_ARRAY){
   my @ARRAY = $_;
}

Это намерение, но это не работает. Какой правильный способ сделать это?

Ответы [ 3 ]

5 голосов
/ 14 октября 2010

Строка my @ARRAY = @$_; (вместо = $_;) - это то, что вы ищете, но если вы явно не хотите сделать копию ссылочного массива, я бы использовал @ $ _ напрямую.

Ну, вообще-то, я бы вообще не использовал $_, тем более что вы, вероятно, захотите перебрать @$_, а затем вы также используете неявный $_ во внутреннем цикле, и тогда вы можете есть беспорядок, выясняющий, какой $_ какой, или если это даже законно. Возможно, именно поэтому вы и копировали в @ARRAY.

Во всяком случае, вот что я бы сделал:

for my $array_ref (@TWO_DIM_ARRAY) {

    # You can iterate through the array:
    for my $element (@$array_ref) {
        # do whatever to $element
    }

    # Or you can access the array directly using arrow notation:
    $array_ref->[0] = 1;
}
4 голосов
/ 14 октября 2010

$_ будет массивом ссылок (не массивами ), поэтому вам нужно разыменовать его как:

my @ARRAY = @$_;
4 голосов
/ 14 октября 2010
for (@TWO_DIM_ARRAY) {
    my @arr = @$_;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...