• 締切済み

perlで列の抜き出し

a,b,c,d 1,2,3,4 5,6,7,8 以上のような配列のデータを読み込んだときに、 c 3 7 のように縦の列のデータを抜き出すプログラムを考えています。 これはどのように記述すればよいでしょうか。 二次元配列はperlでは不可能と言うことであまりperlでは難しいでしょうか。

  • Perl
  • 回答数3
  • ありがとう数1

みんなの回答

  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.3

転置行列をもとめたいのであれば、”perl 転置行列”で検索すればいいと思います。 特定の列の値を抽出したいのであれば、以下のような方法があると思います。 my @matrix = ( [ qw(a b c d) ], [ qw(1 2 3 4) ], [ qw(5 6 7 8) ], ); my $col = 2; my @values; for my $row (@matrix) { push @values, $row->[$col]; } print "@values";

Vidohunir
質問者

お礼

すいません。自己解決しました。 転置行列も可能なのですね。参考になります。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

え~と, 入力の形がよくわかんないんだけど.... この配列が行ごとに入っているんだったら, そもそも「二次元配列」なんぞ使わないのでは?

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.1

2次元配列はできますよ。 C言語と同じ様に、 $a[$i][$j] という風に使います。 # 学校の宿題じゃ無いですよね?

関連するQ&A

  • Perlでの文字列操作について

    Perlを使用しての文字列操作について教えてください。 たとえば以下のような数字とアルファベットが順に並ぶ文字列があるとします。 11A4C555D67B114B9423C アルファベットは1文字ですが、数字は何個でも連続で並びます。 この文字列を「数字アルファベット」の部分で分割し、配列に格納したいのですが、うまくいきません。 @array=('11A','4C','555D','67B','114B','9423C') どなたか教えてください。よろしくお願いいたします。

  • perlでアドバイスをお願いします。

    あるテキストファイルが以下の内容で記述されているとします。 a   file1 a   file1 a   file1 b   file1 b   file1 b   file1 c   file2 c   file2 d   file2 d   file2 e   file2 e   file2 f   file3 f   file3 f   file3 上記のように列が二つあるテキストファイルについて、 2列目のfile名が1列目のどの値とひもづいて いるかを処理するperlプログラムを作ることを考えます。 出来上がったperlによって上記テキストファイルを処理した結果は、 file1は aとb file2は cとdとe file3は f とひもづいていることが分かる ということにしたいです。 これをperlプログラムで書くとき、条件として 一行一行を読みとるとき if ( $_ =~ /(\S+)\s+(\S+)/ ){ を使っています。 そのため$1と$2に現在行の1列目,2列目が与えられた後、 ハッシュと配列を組み合わせて考えた場合どのようにすれば いいのでしょうか。 また仮にテキストファイルの続きが存在し、 1列目がg 、2列目がfile1 の行があるとき 2列目で既に出てきた同じfile名はエラーとすることも考えた 場合どう記述するのか合わせてお願い致します。 長くなってしまい申し訳ないのですが、 ご指導ご鞭撻宜しくお願い致します。

  • perlの文字列組み合わせ

    perlでプログラムを作成中です。 作成したモノはうまく動かないので掲載できませんが、 どなたかお知恵を貸してください。  入力文字列に対して 1をA、2をB、3をC に置換するプログラムを作成中です。 ただし、全ての組み合わせを出力したいのです。 つまり、”213”と入力すると回答は、 B13 BA3 BAC 2A3 21C 2AC B1C と出力したいのです。  プログラムとしては、入力文字列を1つずつを配列に入れて、それぞれの変換 をかけ、1つずつ組み合わせて出力しているのですが、どうもうまくいきません。 手法は特に固執してませんので、どの様な形でも結構です。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • perlでご助言お願い致します。

    あるテキストファイルが以下の内容で記述されているとします。 a   file1 a   file1 a   file1 b   file1 b   file1 b   file1 c   file2 c   file2 d   file2 d   file2 e   file2 e   file2 f   file3 f   file3 f   file3 上記のように列が二つあるテキストファイルについて、 2列目のfile名が1列目のどの値とひもづいて いるかを処理するperlプログラムを作ることを考えます。 出来上がったperlによって上記テキストファイルを処理した結果は、 file1は aとb file2は cとdとe file3は f とひもづいていることが分かる ということにしたいです。 これをperlプログラムで書くとき、条件として 一行一行を読みとるとき if ( $_ =~ /(\S+)\s+(\S+)/ ){ を使っています。 そのため$1と$2に現在行の1列目,2列目が与えられた後、 ハッシュと配列を組み合わせて考えた場合どのようにすれば いいのでしょうか。 ご助言ご鞭撻宜しくお願い致します。

    • ベストアンサー
    • Perl
  • Perl テキスト内の文字列 合計値

    ご教示お願い致します。 test.txt --------------- a,a,a c,b,b b,c,b a,a,d a,e,e --------------- ↑のようなテキストがあり それを 1列目[0] a = 3 b = 1 c = 1 d = 0 e = 0 2列目[1] a = 2 b = 1 c = 1 d = 0 e = 1 3列目[2] a = 1 b = 2 c = 0 d = 1 e = 1 このように求めたいのと、 全ての配列から a = 6 b = 4 c = 2 d = 1 e = 2 という風に求めたいのですが、どのようにするのでしょうか?

  • EXELの質問です。例えば、EXELのシートABCDの列にAの列は、番

    EXELの質問です。例えば、EXELのシートABCDの列にAの列は、番号が順不同で縦列に数字のデータが入っているとします。Bのシートには、タイトルデータが縦に入っているとします。Cの列には、Aの列と違ったデータが縦列に数字のデータが入っているとします。Dには、項目のデータが縦に入っているとします。以上のデータをCのデータを順に並び変えたとします。ここで初歩的なご質問ですが、Cだけでなく他のA B D のデータも一緒にCとの結びつけたデータを並び変える方法は、どのようにすればいいのでしょうか? 教えてください。

  • VBで配列の初期化について

    VBやVBAで1次元・2次元配列を、プログラムの中の 値の(リテラル的)記述で初期化する方法はどうすれば良いのでしょうか。1次元配列にはx=Array()で代用してきましたが、さて、行と列がある表のような、値データを2次元配列にセットしようとして、ハテナと行き詰まりました。配列名(要素)=値を要素数だけ繰り返す方法以外に、例えば A[][]={(a、b、c)(d、e、f)(g,h,i)}のような、書き方は出来ないのでしょうか。 複数のArrayをArreyの()内に入れてみましたがも上手く行かないようですが。 有り無しについて教えていただけたらと思います。 市販の解説書数書には触れた記述は見つかりませんでした。

  • 行・列の整理! perl

    perlでデータを並び替えて整理したいです。 【元データ】 A a b A c d A e f A g h B i j B k l B m n C o p C q r C s t C u v ・ ・ ・ 上記のデータを下記のように並び替えしたいのですが上手くできずに困っています。 どのような記述をすれば良いのでしょうか。間の空白はタブ区切りです。 【目標】 A a b c d e f g h B i j k l m n C o p q r s t u v D ・ 現在、元データから A B C D ・ ・ というデータを作り、元データと比較していますが上手くいきません。 for($i=0; $i<@key; $i++){ print OUT "$key[$i]"; for($j=0; $j<@data; $j++){ if($key[$i] =~ /$data[$j]/){    #部分一致 print OUT "$'"; } } print OUT "\n"; } 部分一致の行を正規表現を用いて上手く処理したいのですがやり方がわからず躓いています。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • Perlの戻り値について

    配列の戻り値が理解できていないのですが、 Perlで正しく動作させるためには どのように記述したら良いのでしょうか? 戻り値の動作を詳しく書いてある(出来れば図入りで) 本はありますか? 例) sub a { my @a = ('A'); return (@a, "B", 2); } my (@a, $b, $c) = &a; print "a=[@a] b=[$b] c=[$c]\n"; # a=[A] b=[B] c=[2] # これを期待していたが # a=[A B 2] b=[] c=[] # こちらになる

    • ベストアンサー
    • Perl
  • エクセルで2列のデータを1列にする方法について質問です

    エクセルで2列のデータを1列にする方法について質問です エクセルで2列のデータを1列のデータにするときに A B 1 a 2 b 3 c   4 d 5 e ↓ A B a 1 b 2 c 3 d 4 e 5 となるようにするにはどうすればいいでしょうか?

専門家に質問してみよう