• ベストアンサー

スカラーを配列に変換

$abc = <<END_OF_MESSAGE; A B C END_OF_MESSAGE; これをそのまま @abc = (A, B, C) という配列にして使いたいのですが、どうすればいいのでしょうか?

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

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

  • ベストアンサー
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.1

改行で split すればよいのでは。 my @abc = split /\n/, $abc;

AAbb11ccDD
質問者

お礼

なるほど、そうですね。 どうもありがとうございました。

関連するQ&A

  • 配列のキーに配列を使う場合

    初歩的な事なのかもしれないのですが、 $abc = $a["$b["c"]"]; のように配列のキーに配列を使いたいのですが、上記だとエラーが出ます。 どのように記述すればよいでしょうか?

    • ベストアンサー
    • PHP
  • プログラムでの配列の渡し方

    ここではフォートランの問題としてお尋ねします。(フォートランのカテゴリがないのでプログラムの専門家に聞けそうなカテゴリに質問してます。) dimension a(100,100) ... call abc(a) ... stop end subroutine abc(b) dimenison b(100,1) ... return end というようなプログラムがあります。メインの方でa(100,100)と宣言してサブルーチンではb(100,1)で受けるというような処理です。 このようにメインとサブで配列のサイズが異るのはどのようなレベルで許容されるものでしょうか。考え方がわからないのでお尋ねします。私は厳密にサイズを合わせると思っていました。しかしそうだとサブルーチンの使い回しができなくなります。このような問題はC言語の配列の先頭のアドレス云々という問題と似ているのですが。2次元配列ということがわかっていて片方のサイズがわかると自ずからもう片方のサイズがわかるということなのでしょうか。 まとめますと、以下のような点がわからないということです。 1.メインとサブで配列サイズが異なっても問題ないやり方 2.サブ側が動的に対応できるようにするプログラムの書き方(同じサブルーチンだけど、呼び出すメイン側の配列サイズに自動で対応する方法) *などを使うのだろうと思いますが。 この部分はしっかり理解しないと大怪我するところなので確認したいと思っています。 (実験して試すというのではなく、仕様としてどうかということですが) よろしくお願いします。

  • [perl]サブルーチンに渡す値が配列でもスカラーでも同様に処理できるようにしたい

    &test( [ X ] , [ Y ]); X:配列またはスカラー Y:スカラー のような形でサブルーチンに渡し、Xが配列であってもスカラーであっても新しい配列にpushしたいのですが、どうしてよいのか分かりません。 具体的には $a = 100; @b = qw/1 2 3 4 5/; $c = 500; のとき、 &test($a, $c);なら @array = qw/100/; $scalar = 500; &test(@b, $c);なら @array = qw/1 2 3 4 5/; $scalar = 500; のようにしたいのです。 なお、&test($a, @b, $c);のように引数を三つにして送る方法は仲間に却下されてしまいました。 なるべく引数は二つの方向でお願いいたします。

    • ベストアンサー
    • Perl
  • 関数に配列を渡して値を変える

    関数に配列を渡して値を書き換えたいのですが、文字配列である char b[10]="abc"; の書き換えが綺麗にできません。 どのように書いたら綺麗にできますか? void hen(int *a, char *b,char **c){ *a=7; b[0]='d'; b[1]='e'; b[2]='f'; //こういう書き方なら渡せるけれどb[10]="def"; 見たいな書き方で一行で値を渡す方法はないものかな? *c="jkl"; } void main (void){ int a=5; char b[10]="abc"; char *c="ghi"; hen(&a,b,&c); printf("%d %s %s\n",a,b,c); }

  • 配列の変換

    Cで書かれている配列の static GLfloat A [8][3]={ {-5.0,-8.0,-5.0},{-5.0,8.0,-5.0}, {45.0,8.0,-5.0},{45.0,-8.0,-5.0}, {-5.0-8.0,5.0},{-5.0,8.0,5.0}, {45.0,8.0,5.0},{45.0,-8.0,5.0}, }; をObject Pascalの配列に変換したいです。多分、 A : array[X..Y] of GLfloat = (x,y,z,r); の形になると思うのですが、X,Y,x,y,z,rに入る値が分かりません。 (GLfloatはOpenGLの型定義です。Cでいうところのfloat) 分かる方いらしたら教えてください。

  • VB.NET 2つの配列を連動して並び替える

    VB.NETで2つの配列の一方を文字列の長い順番に並び替えて 他方の配列もその順番に並び替えたいのですが どのようにすればよろしいでしょうか。 例えば、 A(0)="Japan" A(1)="America" A(2)="People's Republic of China" A(3)="Republic of Korea" A(4)="Democratic People's Republic of Korea" B(0)="Tokyo" B(1)="Washington, D.C." B(2)="Beijing" B(3)="Seoul" B(4)="Pyongyang" という2つの配列があって 配列A()を文字列の長い順番に並び替えると A(0)="Democratic People's Republic of Korea" A(1)="People's Republic of China" A(2)="Republic of Korea" A(3)="America" A(4)="Japan" となりますが、この時配列B()も以下のように 配列A()の順番と同じ順番になってほしいのです。 B(0)="Pyongyang" B(1)="Beijing" B(2)="Seoul" B(3)="Washington, D.C." B(4)="Tokyo" なお、配列A()の並べ替えは以下のようにしていますので できましたら、このコードに追記する感じで 教えていただけるとありがたいです。 よろしくお願いします。 ------------------------------------------------------ Module Module1 Sub Main() Dim A(4) As String Dim B(4) As String A(0) = "Democratic People's Republic of Korea" A(1) = "People's Republic of China" A(2) = "Republic of Korea" A(3) = "America" A(4) = "Japan" B(0) = "Pyongyang" B(1) = "Beijing" B(2) = "Seoul" B(3) = "Washington, D.C." B(4) = "Tokyo" Dim comp As New LengthComparer() Array.Sort(A, comp) For Each s As String In A Console.WriteLine(s) Next End Sub Public Class LengthComparer Implements System.Collections.IComparer Implements System.Collections.Generic.IComparer(Of String) Public Function Compare(ByVal x As String, ByVal y As String) As Integer _ Implements System.Collections.Generic.IComparer(Of String).Compare If y Is Nothing AndAlso x Is Nothing Then Return 0 End If If y Is Nothing Then Return -1 End If If x Is Nothing Then Return 1 End If Return y.Length.CompareTo(x.Length) End Function Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _ Implements System.Collections.IComparer.Compare If y Is Nothing AndAlso x Is Nothing Then Return 0 End If If y Is Nothing Then Return -1 End If If x Is Nothing Then Return 1 End If If Not (TypeOf y Is String) Then Throw New ArgumentException("String型でない", "y") ElseIf Not (TypeOf x Is String) Then Throw New ArgumentException("String型でない", "x") End If Return Me.Compare(DirectCast(y, String), DirectCast(x, String).Length) End Function End Class End Module ------------------------------------------------------

  • VBAの配列について

    VBAの配列について質問があります。 以下のような配列Aと配列Bがあったとします。 やりたいことは、配列Cを作成して、配列Aと配列Bを結合したいです。 ----------------------------------------- Dim 配列A(3) 配列A(0) = 10 配列A(1) = 11 配列A(2) = 12 Dim 配列B(3) 配列B(0) = 100 配列B(1) = 110 配列B(2) = 120 ---------------------------------------- Dim 配列C(6) 配列A(0) = 10 配列A(1) = 11 配列A(2) = 12 配列A(3) = 100 配列A(4) = 110 配列A(5) = 120 ---------------------------------------- 配列Cを作るために、配列Aを拡張して、配列Bを挿入すれば可能 でありますが、関数のようなもので簡単に表現できないもので しょうか? 何かご存知でしたが、ご教授願います。

  • 二つの配列から連想配列を作る方法

    @Aと@Bという二つの配列があり、そこから %C = ( "$A[0]" => "$B[0]", "$A[1]" => "$B[1]", "$A[2]" => "$B[2]", ・ ・ ・ ); という連想配列を作ることは出来ますでしょうか。 @Aと@Bは変動するので%Cは自動的に作成したいのです。 宜しく願い致します。

    • ベストアンサー
    • Perl
  • 配列の要素の入り方

    こんばんは。 現在C言語のプログラミングを勉強しています。 まだまだ初心者で基礎も十分には理解できていないので、とても基本なのかもしれませんが質問させていただきます… 例えば以下のような、配列に文字を入力するだけのプログラムを作ったとします。 --------------------------------- #include<stdio.h> main(){  int data[10];  printf("input - ");  fgets(data,10,stdin); } --------------------------------- これを実行し、 input - abc のように「abc」と入力すると、配列にはどのように入るのですか?  data[0]=a, data[1]=b, data[2]=c となるまではわかるのですが、data[3]からdata[9]には何が入るのでしょうか。配列のクリアはしていない状態です。 改行とnullが入る、というように聞いたのですが、これらはどのような順(?)で配列に入っているのかがわかりません。 よろしくお願いします。

  • 配列について

    C言語についてです。 配列を次のように指定します。 a[3][3][3]={{ {1,7,6}, {6,9,2}, {3,1,1}, },{ {4,6,5}, {5,2,2}, {9,3,7}, },{ {2,6,8}, {2,2,4} {1,1,5}, }} b[3][3]={ {5,5,1}, {3,8,2}, {6,7,0}, } aの配列の中で、bの配列との差が1であるのが多い配列を表示するプログラムを教えてください。 ただし、 {1,7,6}, {6,9,2}, {3,1,1}, なら1、 {4,6,5}, {5,2,2}, {9,3,7}, なら2、 {2,6,8}, {2,2,4} {1,1,5}, なら3と表示する。

専門家に質問してみよう