in reply to Returning arrays from a package

Hi

this

my (@overall,@electronics,@safety) =   ...

can't work, because you are declaring private variables with my.

Private vars stop to exist at end of their scope, which is at most the files boundary.

But you are trying to export global package variables, with

our @EXPORT_OK = qw(@overall @electronics @safety);

so better try

our (@overall,@electronics,@safety) =   ...

our will make @overall et.al. act as aliases for @xyz::overall and the exporter can find them.

(untested)

HTH! :)

update

furthermore returning \@arrayrefs to @arrays doesn't work like this.

Returning shouldn't be necessary if you declare the global variables prior to the function and assign directly inside.

so better try something like

our (@overall,@electronics,@safety); sub breakouts { my (@LoL)=@_; my $i=0; foreach(@LoL){ push @overall,@{$LoL[$i]}[1].":".@{$LoL[$i]}[0]; push @electronics,@{$LoL[$i]}[2].":".@{$LoL[$i]}[0]; push @safety,@{$LoL[$i]}[3].":".@{$LoL[$i]}[0]; $i++; } } breakouts(@products);

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery FootballPerl is like chess, only without the dice