リファレンスを使った方法を教えて下さい。
以下例1.例2のサブルーチンの部分についてリファレンスを使った書きかたを教えて下さい。よろしくお願いします。
例1.
@array1 = ('111x111', '22y2'); $str1 = 'x';
print "find '$str1': ",sagasu($str1,@array1), "\n";
@array2 = ('333x333', '44y4', '555'); $str2 = 'y';
print "find '$str2': ",sagasu($str2,@array2), "\n";
@array3 = ('666x666', '77y7'); $str3 = 'z';
print "find '$str3': ",sagasu($str3,@array3), "\n";
sub sagasu {
my ($what,@area) = @_;
foreach my $idx (0..$#area) {
if ($area[$idx] =~ /$what/) { return $idx }
}
return -1;
}
例2.参照(perlの引数が不安定になります。http://okwave.jp/qa1958086.html)
@array1 = ('111x111', '22y2'); $str1 = 'x';
print "find '$str1': ",sagasu(@array1,$str1), "\n";
@array2 = ('333x333', '44y4', '555'); $str2 = 'y';
print "find '$str2': ",sagasu(@array2,$str2), "\n";
@array3 = ('666x666', '77y7'); $str3 = 'z';
print "find '$str3': ",sagasu(@array3,$str3), "\n";
sub sagasu {
(@area, $what); (@area[0..($#_ - 1)], $what) = @_;
foreach my $idx (0..$#area) {
if ($area[$idx] =~ /$what/) { return $idx }
}
return -1;
お礼
よく分かりました。 ありがとうございました。