![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
読んでいただいてありがとうございます。
Perlをはじめたばかりなのと プログラミング自体もまだまだですので
困っております。
テキストデータ 例えば
apple りんご
banana バナナ
orange オレンジ
などというファイルから読み込んで、
my $data ={
my @english,
my @japanese,
};
などの、配列の構造体に格納するにはどのようにしたら
よいのでしょうか。
最初、本を少し読んだだけの知識で、
use strict;
use warnings;
my $filename = 'data.txt';
my $data = {
my @english,
my @japanese
};
open(IN,$filename) or die "$filename: $!";
while(my $line=<IN>){
for(my $i=0;$i<N;$i++){
($data->{@english}[$i],$data->{@japanese}[$i])=split(/ /,$line);
print "$data->{@english}[$i]\n";
}
}
close(IN);
}
などと書いて、
apple
banana
orange
と表示されるのを期待したのですが、
ダメでした。
参考までに私の誤ったプログラムものせましたが、
全然違っているかもしれませんので、まったく新たに
アドバイスしていただいてもかまいません。
これを応用したものを使いたいので ぜひともどなたかお教え
いただければと思います。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
#1です。
大した回答になっていなかったので、再投稿します。Perlを学んで数日ということで、サンプルコードを載せておきます。
use strict;
use warnings;
my (@english, @japanese);
open IN, "<data.txt" or die $!;
flock IN, 1;
while (<IN>) {
chomp;
split(/\s+/);
push @english, $_[0];
push @japanese, $_[1];
}
close IN;
my $data = { english => [@english], japanese => [@japanese] };
print $data->{japanese}[1];
最初は、@english と @japanese それぞれの配列に入れています。
最後に、お望みの形にする為に、$dataに格納しています。
No.4
- 回答日時:
"...などの、配列の構造体に格納"ということから、
恐らく、ハッシュ(いわゆる連想配列)に格納したい、
ということのなのでしょうね。
ハッシュ変数は頭に "%" をつけたものです。
もしそれをご存知ないようでしたら
まずそこまで勉強されるのがよいでしょう。
ハッシュに特化した関数がいろいろあり簡単に記述できます。
No.2
- 回答日時:
テキストデータから読み込まずに
Perlコードに直書きで配列に格納した状態にすることはできますか?
なんか、そのコード見てると読み込む以前の所から怪しい気がしたもので…。
そうなのです。。。Perl初めて2、3日なもので。。。その状態で
プログラムを書いていると
何があっていて何が間違っているのか分からず。。。
今は例というか 練習として上記のような少しのデータでしたが、
実際に扱うことになるのは大量のデータが入ったファイルなので
ファイルから読み込んで配列に格納するということがしたかったのです
(>_<)
No.1
- 回答日時:
このプログラムには致命的な点があります。
$data = { } の意味をもう一度学習されると良いでしょう。
これは、無名ハッシュのリファレンスです。
ハッシュなのに my @english, my @japanese を格納しても意味がありませんので、
ここは、$data = { english => undef, japanese => undef } などとして、$data->{english}[$i] 等として使うと良いかもしれません。
ややこしいなら、リファレンスを使わずに書いてみましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- 英語 英語の問題でどう解いたらよいか分からないものがあります。教えていただけませんか?接続詞の単元です。 2 2023/06/18 15:45
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- その他(クラウドサービス・オンラインストレージ) Google ColabでGoogleドライブのサブフォルダにファイルを生成する方法 1 2022/10/31 17:37
- その他(SNS・コミュニケーションサービス) 自分のpcがハッキングされたようなメールが来たのですがどうすればいいですか? 4 2022/10/02 16:14
- YouTube youtubeからの著作権メールについて 2 2023/02/14 16:12
- 日本語 こんばんは。 Is there a way in japanese to say "I couldn 2 2022/05/12 20:05
- 英語 2 SPEAKING NATURALLY People often use informal ter 1 2023/05/08 18:09
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- 英語 a lot of my homeworkはありか? 5 2022/10/13 16:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INDIRECT 横に再度抽出したい
-
Perlで、「が」を、「...
-
このファイルを開く方法で困っ...
-
perlのflock関数でロックをかけ...
-
perl 正規表現でエラー
-
P.Cのシングルチューナーとダブ...
-
perl LWPでURLにアクセスした時...
-
PerlでUTF-8のファイルの文字列...
-
AI sisterとは、偽物の人ですか?
-
Perlで時間の計算
-
perlのrequireの動き方について...
-
Perlで特定文字列から特定文字...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
if($key){ ($key eq 'aaa') ||...
-
双方向リスト(?)
-
HTML::TemplateのTMPL_LOOPにつ...
-
連番ごとに印をつける
-
変数に何も入ってないとき
-
Perlのリファレンスについて
-
ハッシュを無名変数へ代入して...
-
VB6の公式リファレンスはありま...
-
bashのリファレンス的なWEB...
-
DBIを使用してデータを連想配列...
-
重複する値を表示しない
-
クラスの作り方
-
Perl構造体、出力方法
-
ハッシュの配列を作ることは可...
-
Yahooの掲示板のような掲示板を...
-
ファイルからデータを読み込ん...
-
Perlで縦横変換のような事をし...
-
サブルーチンの返値に配列のハ...
-
構造体の配列の指定方法
-
C言語について。
おすすめ情報