おせわになります。Perl でリファレンスを使って作った配列のサイズを調べる方法を教えてください。


e.g.(コード例)
my @data = ();
my $ref_hash = {};
(ループ){
$ref_hash->{$key} = "$str"; # リファレンス・ハッシュに要素追加
}
$data[$counter] = $ref_hash;

以上のような場合の @data のサイズが知りたいです。用途としてはサブ・ルーチンに複数の配列リファレンスを渡して、サブ・ルーチン側で配列サイズを取得して処理を加えたいのです。自分でも試行錯誤してみましたが巧く行きませんでした。

お知恵を拝借させてください。

回答の条件
  • 1人2回まで
  • 登録:2006/11/26 08:39:34
  • 終了:2006/11/26 11:38:26

回答(1件)

id:wkbyshnbtk No.1

wkbyshnbtk回答回数8ベストアンサー獲得回数22006/11/26 10:58:58

ポイント60pt

>用途としてはサブ・ルーチンに複数の配列リファレンスを渡して、サブ・ルーチン側で配列サイズを取得して処理を加えたいのです。

サイズ、というのが、配列の個数、という意味なら

my $array_count = scalar @data;

ですね。

サブルーチンに

&hoge(\@data);

という感じで渡す場合は、

sub hoge {
    my ($array_ref) = @_;
    my $array_ref_count = scalar @$array_ref;
    print $array_ref_count;
}

という感じでしょうか。


ただ、サンプルのようなコードの場合、配列に入れる意味が感じられません。

ハッシュリファレンスの使い方としては、

my @data;

(ループ1) {
    my $hash_ref = {};
    (ループ2) {
        $hash_ref->{$key} = "$str";
    }
    push @data, $hash_ref;
}
&hoge(\@data);

という感じだと思うのですが。

id:renpoo

ありがとうございます。

実際の使用文脈はアドヴァイスをいただいたのと同じになってます。

おかげで助かりました。

2006/11/26 11:38:01

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません