2013-07-10 25 views
6

Mã:Làm thế nào để tham khảo giá trị trả về của một perl phụ

my $compare = List::Compare->new(\@hand, \@new_hand); 
print_cards("Discarded", $compare->get_Lonly()) if ($verbose); 

print_cards hy vọng (vô hướng, tham chiếu đến mảng).
get_Lonly trả về mảng. Cú pháp để chuyển đổi nó thành một tham chiếu để tôi có thể chuyển nó tới print_cards là gì? Ví dụ: \@{$compare->getLonly()} không hoạt động.

Cảm ơn!

Trả lời

14

Bạn có thể muốn

print_cards("Discarded", [$compare->get_Lonly]) 

Subroutines không gửi lại mảng, họ trả về một danh sách các giá trị. Chúng tôi có thể tạo tham chiếu mảng với [...].

Các biến thể khác sẽ được thực hiện một mảng rõ ràng

if ($verbose) { 
    my @array = $compare->get_Lonly; 
    print_cards("Discarded", \@array) 
} 

Các giải pháp đầu tiên là viết tắt từ này.


@{ ... } là toán tử dereference. Nó mong đợi một tham chiếu mảng. Điều này không hoạt động như bạn nghĩ nếu bạn cung cấp cho nó một danh sách.

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