getInfo $scalar, @array, %hash; #### #!/usr/bin/perl package Foo; use Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(getInfo); sub getInfo ($\@\%) { my $scalar = shift; my $array = shift; my $hash = shift; print "scalar = '$scalar'\n"; print "array = $array\n"; print "hash = $hash\n"; print '('.join(', ',map{"'$_'"} @$array).")\n"; print "$_ => $hash->{$_}\n" for keys %$hash; push @$array, 'unexpected'; } 1; __END__ # calling programm foo.pl #!/usr/bin/perl use Foo; my $scalar = 'string'; my @array = qw(di da doh); my %hash = (foo => 'bar', baz => 'quux'); getInfo $scalar, @array, %hash; print "passed array: ".join(', ',map{"'$_'"} @array).")\n"; __END__ # output scalar = 'string' array = ARRAY(0x8190b74) hash = HASH(0x81677bc) ('di', 'da', 'doh') baz => quux foo => bar passed array: 'di', 'da', 'doh', 'unexpected') #### sub getInfo { my $scalar = shift; my %hash = @_; }