dポイントプレゼントキャンペーン実施中!

リファレンス配列の要素数は、$#では求められないのでしょうか?

-------------------------------------
foreach $i(0 .. 3){
$hash->[$i] = $i * 100;
}
print "\%hashの要素数->$#hash\n";

$ref = \%hash;
print "\%{$ref}の要素数->$#{$ref}\n";
-------------------------------------

A 回答 (2件)

んーと


配列のリファレンスをつかった例でしたら...


foreach $i(0 .. 3){
$hash[$i]->{'v'} = $i * 100;
}

# 配列@hashへのリファレンス
$ref = \@hash;

# デリファレンス
@copy = @{$ref};

print "\$refの要素数->$#$ref\n";
print "\@copyの要素数->$#copy\n";


あと配列 @hash と連想配列 %hashは内容は別物ですので
期待した動きにならないのだと思います...
    • good
    • 0
この回答へのお礼

なるほど!素晴らしいご回答ありがとうございます!
期待実現できました!

お礼日時:2005/07/26 21:32

こんちは



print "\%hashの要素数->$#hash\n";

print "\%hashの要素数->$#{$hash}\n";

でどでしょか
    • good
    • 0
この回答へのお礼

すみません。最初のループ間違えました。
foreach $i(0 .. 3){
$hash[$i]->{'v'} = $i * 100;
## $i番目の要素の'v'プロパティをセットするイメージです
}
これでも
print "\%hashの要素数->$#hash\n";
でうまく出ます。
ところが、参照リファレンスだと簡単に出ません。
%copy = %{$ref};
print "\%copyの要素数->$#copy\n";

@copy = @{$ref};
print "\@copyの要素数->$#copy\n";

連想配列としても使えません。
foreach $i(keys %hash){
print "by \%hash $i\n";
}

foreach $i(keys %{$ref}){
print "by \%{$ref} $i\n";
}

foreach $i(keys %copy){
print "by copy $i\n";
}

使い方が間違ってるのでしょうか?

お礼日時:2005/07/26 19:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!