Tôi có cấu trúc dữ liệu là một băm có chứa một mảng băm. Tôi muốn đạt được trong đó và kéo ra băm đầu tiên phù hợp với một giá trị tôi đang tìm kiếm. Tôi cố gắng này:Tại sao sự dịch chuyển của Perl phàn nàn 'Loại arg 1 để dịch chuyển phải là mảng (không phải là biến lặp grep).'?
my $result = shift grep {$_->{name} eq 'foo'} @{$hash_ref->{list}};
Nhưng điều đó mang lại cho tôi lỗi này: Type of arg 1 to shift must be array (not grep iterator).
Tôi đã đọc lại perldoc cho grep
và tôi nghĩ rằng những gì tôi đang làm có ý nghĩa. grep
trả về một danh sách, đúng không? Nó có trong ngữ cảnh sai không?
Tôi sẽ sử dụng biến tạm thời cho bây giờ, nhưng tôi muốn tìm hiểu lý do tại sao điều này không hiệu quả.
Tôi nghĩ tôi sẽ viết 'Danh sách không phải là mảng' 100 lần trên bảng trắng của tôi. Cảm ơn. – wes
Có một câu trả lời tốt hơn cho Câu hỏi thường gặp đó ngay bây giờ: http://www.effectiveperlprogramming.com/blog/39 –
@brian d foy - Khi nào Câu hỏi thường gặp được cập nhật? (tức là chúng ta sẽ thấy nó trong một bản phát hành điểm của Perl 5 phiên bản 10, hoặc nó sẽ có trong phiên bản 12?) – Quentin