Passage d'un tableau, d'un scalaire et d'un hachage à un sous-programme en Perl

Quelle est la meilleure façon d'envoyer plusieurs tableaux, variables, hache à une sous-routine?

Forme Simple, fonctionne.

my $msg = &getMsg(1,2,3);
print $msg;

sub getMsg {
    my($a, $b, $c) = @_;
}

J'ai de la difficulté avec cette version et je ne suis pas sûr de savoir comment envoyer les données en toute sécurité à la sous-routine sans l'aide d'un mondial qui n'est pas ce que je veux faire.

my @array = ('a','b','c');
my $str = "Hello";
my %hash = (
    'a' => ['100','nuts'],
    'b' => ['200','bolts'],
    'c' => ['300','screws'],
);

my $msg = getMsg(@array, $str, %hash);
print $msg;

sub getMsg {
    my (@a, $s, %h) = @_;
    my $MSG;
    foreach my $x (@a) {
        $MSG .= "\n$str, $x your hash value = $h{$x}[0] $h{$x}[1]";
    }
    return $MSG
}

source d'informationauteur chrisrth