Tôi khá mới đối với Perl, vì vậy hãy tha thứ cho tôi nếu điều này có vẻ như một câu hỏi đơn giản ...Perl Làm thế nào để lấy một mảng từ một mảng băm?
Dù sao, tôi có một mảng băm và tôi đang cố truy xuất một trong các mảng trong băm, nhưng tất cả những gì tôi có thể nhận được là kích thước vô hướng của mảng.
%HoA = a hash of arrays
$key = some key in the hash
foreach $nextItem (@HoA{$key}) {
do a bunch of stuff with $nextItem
}
Khi tôi làm điều này, $ nextItem luôn là kích thước của mảng và vòng lặp chỉ chạy qua một lần. Tôi đã thử in các nội dung sau:
@HoA{$key}
$HoA{$key}
@$HoA{$key}
Hai chữ đầu tiên cho tôi kích thước vô hướng và thứ ba cho tôi không có gì ... tôi thiếu gì ở đây?
CẬP NHẬT: Tôi tự hỏi nếu vấn đề của tôi thực sự là cách tôi thêm mảng vào băm. Dưới đây là những gì tôi đang làm:
@HoA{$key} = split(/ /, $list);
Điều đó có gắn mảng trong giá trị băm hoặc mảng trong giá trị băm không?
UPDATE 2: Tôi đã thử các khối mã sau đây:
my $key = "TEST";
my %HoA =();
my @testarray = (1, 2, 3);
@HoA{$key} = @testarray;
print Dumper(%HoA);
Dưới đây là kết quả:
$VAR1 = 'TEST';
$VAR2 = 1;
Tại sao nó chỉ bám giá trị đầu tiên của mảng trong?
Tôi cố gắng đó . Nó chỉ trả về một kích thước bằng không và vòng lặp thậm chí không thực hiện một lần. – mrplainswalker
@mrplainswalker - Thử in ra nội dung của băm và đảm bảo nó có cấu trúc mà bạn nghĩ nó có. Có lẽ bạn chính là không xác định hoặc không phải là một mảng như bạn nghĩ. Bạn có thể sử dụng Data :: Dumper; Dumper (% HoA) để kiểm tra.Bạn cũng có thể thực hiện nếu (được định nghĩa ($ HoA {$ key})) {print "Defined"} như một bài kiểm tra nhanh – scrappedcola
Ok, tôi đã thử hàm Dumper để xem nội dung trong băm và bạn nói đúng. .. nó không phải là những gì tôi mong đợi. Mỗi giá trị chỉ là mục đầu tiên trong mảng chứ không phải toàn bộ mảng. – mrplainswalker