リファレンスを使った方法を教えて下さい。
以下例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;
お礼
思いっきりおっしゃる通りでした^^; 解決できました。 本当に有難うございます。