victorz22 has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks, I created an object that returns an array but I am having problems dereferencing that array and storing its data in a hash. I called 'ref' on $data and it printed out ARRAY. The print statement inside the foreach loop does print out the data correctly. However the print statement at the end of the function prints out a 1. I want it so when i print the hash the unreferenced data shows up instead of a reference to an array. Thank you :)

sub cycleForLibs{ my ($fileDirectory, $scopeName, $fileName, $modelName) = @_; my $fileLoader = Loader->new( $fileName, $fileDirectory, $scopeNam +e, $modelName); my $data = $fileLoader->{'data'}; print ref $data; if(defined $data){ foreach my $line ($data){ print "Line: @$line \n"; $exportLibs{$scopeName} = @$line; } } print Dumper $exportLibs{$scopeName}; }

Replies are listed 'Best First'.
Re: Defereferncing an array gathered from an object
by KurtZ (Friar) on May 19, 2017 at 23:53 UTC
    Please try
    if(defined $data){ $exportLibs{$scopeName} = $data; }
    Hope this is what you really want.
    Update: If your intention is to join more than one $data array for the same $scopeName, you'd need:
    if(defined $data){ push @{ $exportLibs{$scopeName} } = @$data; }