>>27
プロトタイプ使ってリファレンス受け取るサブルーチンにすれば
呼び出し側では字面上はスカラー/配列/ハッシュをそのまま
渡しているように書ける。あとはrefで何のリファレンスか調べる
ことができるのでなんとでもなるだろう。


% cat cat foo.pl
cat: cat: No such file or directory
sub foo (\[$@%]) {
my($x) = @_;

printf "ref(\$x)=%s\n", ref($x);
}

my $x = 'scalar a';
my @x = ('array', 'a');
my %x = (hash => 'a');

foo($x);
foo(@x);
foo(%x);

% perl foo.pl
ref($x)=SCALAR
ref($x)=ARRAY
ref($x)=HASH