2011-01-20 41 views
9

Tôi là một tổng số newbie Perl, vì vậy tha thứ cho tôi nếu điều này là thực sự ngu ngốc, nhưng tôi không thể tìm ra điều này. Nếu tôi có một mảng như sau:Looping thông qua một mảng băm trong Perl

my @array = (
    {username => 'user1', email => '[email protected]' }, 
    {username => 'user2', email => '[email protected]' }, 
    {username => 'user2', email => '[email protected]' } 
);

Cách đơn giản nhất để lặp qua mảng này là gì? Tôi nghĩ rằng một cái gì đó như thế này sẽ làm việc:

print "$_{username} : $_{email}\n" foreach (@array);

Nhưng nó không. Tôi đoán tôi quá khó khăn với một tư duy PHP mà tôi chỉ có thể làm điều gì đó như:

foreach ($array as $user) { echo "$user['username'] : $user['email']\n"; }

Trả lời

28

@array chứa băm tài liệu tham khảo, vì vậy bạn cần phải sử dụng -> để derefecence.

print "$_->{username} : $_->{email}\n" foreach (@array); 

cũng Xem tài liệu, ví dụ perldoc perlreftutperldoc perlref.

+0

Ôi trời, tôi cảm thấy ngớ ngẩn bây giờ. Cảm ơn bạn! – Ricky

+2

cũng có thể được viết 'say' $$ _ {username}: $$ _ {email} "cho @array;' –

Các vấn đề liên quan