Indeed, the OP's function does that, but OP attempts to accept them as multiple arrays at line 23: my (@overall, @electronics, @safety) = breakouts(@products);
This mixing of metaphors needs to be fixed one way or the other, and I suggest that, since OP wants to export globals, the right way to fix it is to directly load the globals instead of creating lexicals to shadow them. I am surprised that perl does not warn about this; OP does use warnings;.
This also leads to a third option, which is the C way of passing references to breakouts and having it populate the arrays passed as arguments, but I think the oft-seen quip "Keep It Simple, Stupid" applies here: breakouts is not some general function, but sorts specifically this data into these bins. A better architecture would involve replacing the whole thing with an SQL database (start with DBI and DBD::SQLite and move up to DBD::Pg when needed) but OP seems to want these arrays for some reason.
In reply to Re^5: Returning arrays from a package
by jcb
in thread Returning arrays from a package
by sherab
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |