2013-07-10 32 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.