• ベストアンサー

Perlで構造体はつくれませんか?

Perlで構造体を作る方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

どういう意味でしょうか? Cプログラムとかとファイルの読み書きを通じてCの構造体をやりとりするというような意味でしょうか? そうではなくて、Perlの中だけというような意味なら 簡易には、データを構造体の様にまとめるのに、ハッシュが使われます。 もう少しこだわるなら、クラスにしてしまう。 あるいは、そうしたクラスを簡略的に作れる Class::Struct 標準モジュールが使えます。

tamukikun
質問者

お礼

ありがとうございます。Structをさがしてみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • okiyoshi
  • ベストアンサー率34% (11/32)
回答No.3

> 構造体の配列はどのように記述したらよいでしょうか? 構造体の配列・・というのが、 どういうことをイメージしているか不明ですが、、 # 配列の5番目の項目($struct->[4])が配列値の場合 $struct = [ 1, 2, '値1', '値2', [ 3, 4, '値A', '値B' ] ]; # 上記を確認 print "第1レベルの内容\n"; for my $ix ( 0..$#{$struct} ) { print "[$ix]$struct->[$ix]\n"; } print "第2レベル(第1レベルの5番目の項目)の内容\n"; for my $ix ( 0..$#{$struct->[4]} ) { print "[$ix]$struct->[4][$ix]\n"; } # 質問が上記のような構造体の配列・・という意なら、、 @struct = ( $struct, $struct_2, $struct_3,, ); # など・・

全文を見る
すると、全ての回答が全文表示されます。
  • okiyoshi
  • ベストアンサー率34% (11/32)
回答No.1

my $struct; $struct->{level1}{level2}{level3} = 'あるレベルのある値'; など、自由にできます。 各レベルはハッシュでも配列でもかまいません。 作った構造体はStorableでシリアライズ出来るので、 そのまま外部に記録したり、それを復元したり、と自由にできます。

tamukikun
質問者

補足

回答ありがとうございます。 構造体の配列はどのように記述したらよいでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Perlで構造体の配列を作る方法

    Perlで構造体の配列を作る方法を教えてください。 初期値の設定方法もお願いします。

  • Perlのデータ構造について

    Perlのデータ構造でわからないところがあります。 ハッシュの配列で、以下の構造がある場合 my %hash_array = ( 1=>["aaa", "bbb"], 2=>["ccc", "ddd", "eee"], 3=>[], 4=>["fff"] ); print $hash_array{1}[0]; # aaaが表示される。 print $hash_array{2}[2]; # eeeが表示される。 ですが、 $hash_array{1}は 2 $hash_array{2}は 3 $hash_array{3}は 0 $hash_array{4}は 1 のように個数を表示させるのは、どうすればよいでしょうか? Perlのデータ構造に詳しいサイトや書籍はありますか? また、Perl 5.6.1から Perl 5.8.7に乗りかえようとしていますが、 データ構造など大幅に変わった点はあるのでしょうか?

    • ベストアンサー
    • Perl
  • perlはc++のようなクラスや構造体は作れない?

    c++で class hoge{ hoge(); int menber; }; というようなクラス定義と hoge x; というようなクラス変数定義のようなのは、Perlではできないのでしょうか。 メンバ関数はべつにいいのですが、その構造を配列にして管理したいのです。 たとえば、個人情報のような。 Perlではスタティックなメンバしか持てないと聞いたのですが、本当ですか?

    • ベストアンサー
    • Perl
  • 構造体→文字列→構造体 をする方法

    VB6.0の話です。  不特定の構造体を文字列(String)に格納し、これを最初の構造体に戻す事はできませんか?  具体的には「共有メモリを使い構造体を文字列にして格納>別ウインドウで文字列を取得して構造体に戻す」と言う事をやりたいんです。  共有メモリに不特定の構造体をいれる方法でもいいんですが…VALIANTだとサイズが大きすぎて実用性がありませんし、違う主旨の質問をするのも良くないので回答はあくまで「構造体→文字列→構造体 をする方法」と言う事でお願いします。

  • 構造体について

    linuxのソースコードを呼んでいる者ですが、構造体について、実際に使う方法が分かりません。 ソースコードを少し書き換えて改良したいのですが、構造体が定義されているので、それをそのまま引用しないといけないので分からなくなってしまいました。 例えば、それぞれの関数のなかで最初の変数宣言の部分にstructが付いているものもあれば、付いていないものもあります。 この差はなんなのでしょうか?

  • 構造体で・・・・

    構造体は配列を使用せずメモリ領域を獲得する関数を使用すること、 *構造体内部のメンバ名には配列を用いて良い。  という、条件があるのですが場合はどのようにすればよろしいでしょうか? どなたか教えてください。 構造体は以下のようになってます。 /*構造体の定義*/ struct seiseki{   char name[20];   int eig;   int suu;   int kok;   char rank[3]; };

  • perlでxmlを処理

    現在perlを勉強しています。 xmlで書かれたものを構造体にして処理したいと考えています。 構造体の中の個数などを数えたいです。 構造体はパソコンのお気に入りです。 1、すべてのお気に入りの数 2、すべてのフォルダの数 3、1つのお気に入りフォルダの中にさらに何個のフォルダがあるか などをしたいと思っています。 どのような方法で求めることできるでしょうか? よろしくお願いします。

  • 構造体

    構造体を受け取って、メンバの値を変数に代入する部分での質問です。 lParamには構造体のアドレスが入っています。 strcpy(buf, ((struct mpoint*)lParam)->r); これによって構造体のrメンバの文字列値をbufにコピーしたいのですが、文法が違うようなので正しく直したものを教えてください。

  • スタックに構造体をつむには?

    C言語でスタックに構造体を積む方法を知りたいのですがどうしたらよろしいのでしょうか? 教えてください。

  • 構造体の宣言

    下記のように構造体の宣言をした所、 struct B_PARAM test; 「`test' の領域サイズがわかりません」というエラーになってしまいました。この構造体を宣言し、値を入れていこうとしています。 ヘッダファイルに構造体の形は定義してあるのですが、 構造体の中に構造体があるからでしょうか? またこの構造体を正しく宣言するにはどうすればいいのでしょうか?