segui il consiglio di Mich_ di curare di più la gestione dei namespace, per è sempre meglio usare:
use strict;
my $var;
sub funzione {
my $var =...
}
a parte questo quando tu scrivi:
stampa(%prova);
spalmi gli elementi dell'hash all'interno dell'array di sistema @_ nel senso che avrai:
@_ = ('ita',2,'spa',3);
per cui se poi all'interno della funzioni scrivi:
%prova = shift;
scarichi solo il primo elemento di @_ cioè 'ita'.
dovresti fare:
%prova = @_;
per avere ciò che vuoi.
Ma comunque il metodo migliore è il seguente:
#!/usr/bin/perl
use strict;
my %prova;
%prova = ('ita', 2, 'spa', 3);
sub stampa {
my $prova = shift;
print $prova->{'ita'},"\n";
}
stampa(\%prova);