Tôi đã điều sau đây:Lấy chiều dài của một mảng trong một băm Perl
$data{host} -> [$i] -> {someotherstuff}
Làm thế nào tôi có thể nhận được độ dài của mảng nơi [$ i] là gì?
Tôi đã điều sau đây:Lấy chiều dài của một mảng trong một băm Perl
$data{host} -> [$i] -> {someotherstuff}
Làm thế nào tôi có thể nhận được độ dài của mảng nơi [$ i] là gì?
$length = scalar(@{ $data{host} });
trả lời thêm vào tài khoản của msw's comment:
use autobox::Core;
# ...
$data{host}->length;
này hoạt động giống như câu trả lời của Cfreak, ngoại trừ với cú pháp ít phức tạp, với chi phí của việc sử dụng một mô-đun.
Tôi có luận án rằng hầu hết các khiếu nại hợp pháp về Perl có thể được trả lời đơn giản với »Nó không cần phải như vậy!« và hài lòng với bản tóm tắt ngắn từ CPAN.
Nếu bạn muốn chỉ số cuối cùng, bạn có thể sử dụng: $ # @ $ {{dữ liệu máy chủ}}
Rõ ràng, độ dài của mảng là cuối cùng chỉ số + 1. Sử dụng ký hiệu này khi nó là khó khăn hơn để đạt được ngữ cảnh vô hướng, hoặc khi bạn đặc biệt muốn độ dài-1. Ví dụ:
0 .. $ # $ {{dữ liệu máy chủ}} # trả về một danh sách tất cả các chỉ số của mảng
Đôi khi hữu ích.
và họ nói cú pháp Perl là phức tạp (cho biết anh chàng đang sử dụng Perl kể từ v2.x) – msw
Tôi luôn nói với mọi người rằng Perl đứng trước thời gian của nó :-) – Cfreak
Không cần 'scalar'. '$ length = @ {$ data {host}}' cũng đã hoạt động tốt. – Zaid