Perlでは、戻り値に配列を返す場合、そのまま返却することができます。
#!/opt/local/bin/perl;
my @array = &getMyArray();
$i = 0;
foreach $ref(@array) {
print "[$i]:$ref\n";
$i++;
}
sub getMyArray {
my @array = ('A', 'B', 'C');
return @array;
}
結果は
[0]:A
[1]:B
[2]:C
と出力されます。
また、クラスを使う場合でもそのまま配列を返却することが可能です。
main.pl
#!/opt/local/bin/perl;
package main;
use utf8;
use TestSub;
use Clone qw(clone);
my @foo = ('A','B','C');
my $s = TestSub->new(\@foo);
@foo = ();
my @array = $s->getYourArray();
$i = 0;
foreach $ref(@array) {
print "[$i]:$ref\n";
$i++;
}
TestSub.pm
package TestSub;
use utf8;
use Clone qw(clone);
sub new {
$self = shift; # クラス名を取得します
$ref = shift; # 配列への参照を受け取ります
my $array = clone($ref); # 配列の参照をコピーします
my @array2 = (4, 5, 6); # もう1つ別のメンバ変数を作っています
my $data = { # メンバ変数を作っています
ref => $array,
ref2=> \@array2,
};
return bless $data, $self;
}
sub getYourArray {
my $self = shift;
my $result = $self->{ref2}; # メンバ変数から配列を取得
return @$result; # 配列を返却
}
1;
結果は
[0]:4
[1]:5
[2]:6
と出力されます。
0 件のコメント:
コメントを投稿