2011-04-01 9 views
10

मैं जानता हूँ कि इस प्रकार मैं एक सरणी और एक सरणी के लिए एक संदर्भ बना सकते हैं: यापर्ल में किसी सरणी के सरणी संदर्भ को कैसे परिवर्तित करें?

foreach my $i (@{$rarr}){ 

} 

वहाँ कॉपी करने के लिए एक रास्ता है:

my @arr =(); 
my $rarr = \@arr; 

मैं तो सरणी संदर्भ से अधिक पुनरावृति कर सकते हैं इस प्रकार है सरणी को सामान्य सरणी में रेफरी करें ताकि मैं इसे किसी फ़ंक्शन से वापस कर सकूं? (आदर्श रूप से उस foreach पाश और एक धक्का का उपयोग किए बिना)।

+1

अपने प्रश्न में जवाब आप पर्ल में एक सरणी वापस नहीं कर सकते हैं। (हालांकि, आप उस सूची को वापस कर सकते हैं जिसमें एक सरणी शामिल है) – tadmc

उत्तर

14

आप :-)

use warnings; 
use strict; 

sub foo() { 
    my @arr =(); 
    push @arr, "hello", ", ", "world", "\n"; 
    my $arf = \@arr; 
    return @{$arf}; # <- here 
} 

my @bar = foo(); 
map { print; } (@bar); 
3

आप बस एक नई सरणी को बताए द्वारा सरणी कॉपी कर सकते हैं:

my @copy_of_array = @$array_ref; 

लेकिन, आपको लगता है कि सिर्फ संशोधित सरणी वापस जाने के लिए क्या करने की जरूरत नहीं है। चूंकि यह सरणी का संदर्भ है, संदर्भ के माध्यम से सरणी को अद्यतन करना आपको बस इतना करना है!

5

इस तरह:

return @{$reference}; 

फिर आप सिर्फ एक dereferenced संदर्भ लौट रहे हैं।

संबंधित मुद्दे