Tôi có biến số perl $results
được trả về từ dịch vụ. Giá trị được coi là một mảng và $results
phải là tham chiếu mảng. Tuy nhiên, khi mảng chỉ có một mục trong đó, thì $results
sẽ được đặt thành giá trị đó và không phải là mảng được tham chiếu có chứa một mục đó.Bạn có thể buộc tham số vô hướng hoặc mảng là một mảng trong Perl không?
Tôi muốn thực hiện vòng lặp foreach
trên mảng dự kiến. Mà không kiểm tra ref($results) eq 'ARRAY'
, là có cách nào để có một cái gì đó tương đương như sau:
foreach my $result (@$results) {
# Process $result
}
Đó Đặc biệt mẫu mã sẽ làm việc cho các tài liệu tham khảo, nhưng sẽ phàn nàn về vô hướng đơn giản.
EDIT: Tôi nên làm rõ rằng không có cách nào để tôi thay đổi những gì được trả về từ dịch vụ. Vấn đề là giá trị sẽ là vô hướng khi chỉ có một giá trị và nó sẽ là một tham chiếu mảng khi có nhiều hơn một giá trị.
Hành vi này khiến tôi muốn hét lên và được như thế, "PERL STUPID!" Nhưng sau đó tôi nhận ra rằng các ngôn ngữ không yêu cầu điều này vô nghĩa vẫn đang làm nó dưới mui xe, mà làm cho nó làm phiền tôi ít nhẹ hơn .... – Rooster