2008年10月21日火曜日

perlのリファレンス参照

perlの配列渡しで、リファレンスでサブルーチンに渡すことを試す。

サンプルとしては、以下。

--
#! /bin/perl

sub test {
my ( $ref, $ref_count ) = @_;
print "test:@org reference = ", $ref, "\n";
print "test:@org reference = ", $ref_count, "\n";
print "test:@org reference = ", @$ref, "\n";
print "test:@org reference = ", @$ref[0], "\n";
}

my @org = ( 1, 2, 3, 4, 5 );
my $org = @org;

&test( \@org, $org );

print "main:@org reference = ", \@org, "\n";
print "main:@org reference = ", $org, "\n";

--

要点としては以下。
・リファレンスを渡す場合、配列の前に\をつける。
@aaa -> \@aaa
・配列の数は、どうやら別途渡してやらないとサブルーチンではいくつの配列か判らないっぽい。
$aaa = @aaa で配列数をカウントし、サブルーチンに渡す。