"$cols"}; これと等価です。どこで「Shift_JIS からUTF-8へ変換」してますか? @x = ("A", "B", "C", "B", "A"); 中に("12345","67890","ABCDE") に格納したい 列名とは解釈されません (なお、@c は差し支えありません)。 my $output_file="output.txt"; それでいいと思いますよ?これをそのままコード化すると、こんな感じでしょうか。(No.1さんのとはちょっと結果が違います。) #include }, perlでCSVファイルを読み込むスクリプトを作っています。 ## $_には、*.DATAなファイル名が格納されている。 ($data1,$data2) = split(/,/,$all_data) 上のような表は、曜日と時間帯という2つの要素から成り立っており、これを配列として表現するには添字が2つから成る二次元配列を用いて、次のように宣言します。. print OUT $_; というエラーが発生しているのですが while() あるディレクトリから拡張子がdataであるファイルを全て読み込みたいのですが、方法がわかりません。 ================================== ghi ちなみに 一次元配列に格納する場合は 以下のように書きました。 基本的な文法は頭に入れたつもりでしたが、まだポインタと ファイルの入出力に苦手意識があり 実際うまくできないでいるので use warnings; sort では、$a と $b は特別な意味を持っています。$a と $b には、 ActivePerl v5.16.0を使用し、Encodeモジュールのfrom_toを使用しています。 perl int i, maxi; __DATA__ foreach () { 1) @sorted = sort { $a cmp $b } @x; # { $a cmp $b } は省略可   elsif ($data eq "perl")    { $flag = 0 } printf("a[%d] = %s", i, a[i]); my $input_file="input.csv"; maxi = i; close FH; @b = ("Y","X","Z","X","Z" ); while () { 配列は同じデータ型の変数をまとめて扱うことができる機能です。 前ページの配列で説明した配列は一次元配列というもので、単純な並びのデータの場合に有効です。. Can't use string ("0") as an ARRAY ref while "strict refs" { $a <=> $b } # 数値比較 最初に、回答に書き間違いが2カ所あったことをお詫びします。 1) 上から5行目: $a->[2] <=> $b[2] ---> $a->[2] <=> $b->[2] 12345 `wc -l file.txt` . $rows = @data;   elsif ($flag) { print "$data\n" } 指定する $a[$a], $a[$b], $b[$a], $b[$b] のブラケット外の $a, $b は配 my(@data) = $tbl->get_data(); 今回練習しているのは 先に述べたように、テキストファイルに 多次元配列 二次元配列. $data[$i]=Encode::from_to($data[$i],'shiftjis','utf8') char a[10][10]; ■CSVファイル bless $tbl, $this; for (i = 0; i<10; i++) { open FD, "{data} 確認するとShift-JISのままです。 } } @order = sort { $x[$a] cmp $x[$b] or $y[$a] cmp $y[$b] or $z[$a] <=> $z[$b] } 0 .. $#x; foreachループの中で "; $data[$i]=Encode::from_to($data[$i],'shiftjis','utf8'); #Shift-JISからUTF-8に変換 コマンド $arg とすることは可能ですか? open (IN, "<:encoding(shift_jis)", $input_file) or die "$! @y = ("Y", "X", "Z", "X", "Z"); my($tbl) = {"name" => "$file", chomp; となりますよね? $cols = @{$data[0]}; いま、表計算的なスクリプトを記述しています。 while () { my($cols) = 0; my($indx) = shift;   my($key) = shift; teratailを一緒に作りたいエンジニア, ご質問が「pairを使えばできますが、使わずにできるのでしょうか?」となっているので……、どうなのでしょう。. ; close FH; どうすればいいのでしょうか?, $num = @{$list[1]}; 以下のようなCSVファイルがあります。 abc コマンド $arg } どなたか ご存知の方にアドバイスいただければと思って書き込ませていただきます。 fclose(fin); print OUT $_; http://perldoc.perl.org/Encode.html#[$length-=]-from_to($octets,-FROM_ENC,-TO_ENC-[,-CHECK]) {{5,3},{7,2},{8,4},{10,5}}, teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。, 評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。, 上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。, 組み込みの2次元配列なら、たぶんできないと思います。 open FH, "example.log" or die $! うまく中身が表示されないのはなぜか。 sort では、$a と $b は特別な意...続きを読む, 毎回お世話になっています。 ABCDE } else { 例えば、次のようなテキストファイルがあったとします。 ##読み出された内容が$_に格納されている。   @{$p[0]} = ;  ・・(a) $data[$i]=Encode::from_to($data[$i],'shiftjis','utf8'); #Shift-JISからUTF-8に変換 use Encode; "; 配列の添字 (インデックス) を並べ替えるやり方があります。 "\n"; Perl 5.6を使っております。 2次元配列a[n][2]を、ライブラリのsort関数を使ってa[i][0]の値をキーとしてソートすることはできますか?pairを使えばできますが、使わずにできるのでしょうか? ex. "; ファイルに記述されている数値を足したり引いたりするのですが、forを使っての計算の際にファイルの行数が必要となりました。. などと文字列を書いておき、そのファイルを読み込んで 以下のように色々な方法があると思います abc } } C,Z,5 2) 下から3行目: $y[$a] cmp $y[$a] ---> $y[$a] cmp $y[$b] 2次元のテーブルファイルから全ての行を取得したり、指定した行を取り出すようなクラスを作りたいと思っています。new()では、指定したファイルのデータを全て2次元の配列に格納します。そして、メソッドでnew()で格納したデータを取得して処理をしたり、指定行を取り出すといった処理をしようと思います。しかし、sub側やmain側でnew()で格納したデータの値を取得することができません。 しかも、項目数分だけ繰り返し出力されます。 どなたか教えていただけないでしょうか? Perlで原因不明なエラーに直面して困っております。 use strict; open FH, "example.log" or die $! 添字の要素を数値比較せよ、という意味になります。 B,X,3 プログラムの中で変更しようとしているのですが、うまくいきません。出力ファイルの文字コードを for(my $i=0;$i<@data;$i++){ jkl 今回練習しているのは 先に述べたように、テキストファイルに それならば、$_で1行をコード変換→splitして項目毎の処理、としてもいいのでは? しましょう。, 配列が複数あって、キーを3つでソートする場合には どなたか ご存知の方にアドバイスいただければと思って書き込ませていただきます。 $" = "\t"; 2次元配列a[n][2]を、ライブラリのsort関数を使ってa[i][0]の値をキーとしてソートすることはできますか?pairを使えばできますが、使わずにできるのでしょうか?, ex. ですが、二次元配列で、 use utf8; "rows" => "$rows", if (fp == NULL) したものが表示されたり、何も表示されなかったり よく分からないことが起きます。私は何を勘違いしてしまっているのでしょうか(>_<) うまく実現...続きを読む, #include { $a cmp $b } # 文字列比較 Perlにですね。ないはずです。 ($#a + 1) + "\n"; 結果として、 #include ・$octetsの長さを返す print "行数:$a\n"; #細かい書式は他にもありますので調べてみるといいかもしれません。, 普通、配列の要素数を出すとき my($rows) = 0; fclose(fp); my($tbl)->new Table "File"; そもそもperlではできないのでしょうか? のように表示したいのですが、2次元配列でないと無理でしょうか? という点なのですが、(1)をとりあえず急いでおりますので、(2)はおまけ程度に考えていただければと思います。 my($this) = shift; #!/usr/bin/perl FILE *fin; } { @w = ("a", "b", "c", "b", "a"); sort { $x[$a] cmp $x[$b] or $y[$a] cmp $y[$b] or $z[$a] <=> $z[$b] } 0 .. $#x; break; $num = @list; (EOF) main() 行っています。 {{7,2},{5,3},{10.5},{8,4}} print OUT "\n"; 1) @sorted = sort { $a cmp $b } @x; # { $a cmp $b } は省略可 ただいまC言語を勉強中の学生です。 my(@data) = (); for (i = 0; i < maxi; i++) { use utf8; for(my $i=0;$i<@data;$i++){ hoge.txtの様なファイルがあって、この値を2次元の配列に格納したいのですが、簡単に実現することは可能でしょうか? 東京,よろしくお願いします。 ソート対象のリストのうちの2つの要素がセットされます。grep, map fprintf(stderr, "Can't open file\n"); @x = @x[@order]; @y = @y[@order]; @z = @z[@order]; 最初に、回答に書き間違いが2カ所あったことをお詫びします。 などと文字列を書いておき、そのファイルを読み込んで ; 例えば ### 少しマニアックな方法 追加で申し訳ないですが、行数と列数を@dataから取得する方法があればおしえてください。, 「配列 Perl」に関するQ&A: ExcelでのCSVファイルの編集について、, 世の中の成功している男性には様々な共通点がありますが、実はそんな夫を影で支える妻にも共通点があります。今回は、内助の功で夫を輝かせたいと願う3人の女性たちが集まり、その具体策についての座談会を開催しました。, データファイル grep.dat があり、その中は 確認するとShift-JISのままです。 6 / クリップ 長々と書いてしまいましたが、今回 御教授いただきたいのは なぜかファイルの入出力がいまだに把握できなくて苦手としておりますので、どうか よろしくお願いいたします。, 毎回お世話になっています。 ; close (OUT); 文字コードがShift-JISのCSVファイルを読み込み、UTF-8のテキストファイルに出力するのに となっています。 fp = fopen("word.dat", "r"); 1) 上から5行目: $a->[2] <=> $b[2] ---> $a->[2] <=> $b->[2] で良いですよね? 説明が下手ですいません。補足しますのでよろしくお願いします。, while(<*.data>) exit(1); return 0; my($fh) = new IO::File; うまく実現できません。 のですが、どのように記述すればよいでしょうか。, 多次元配列に代入する場合 2) @order = sort { $x[$a] cmp $x[$b] } 0 .. $#x; というのが最短コーディングです。, 皆さんのお知恵をお貸し頂ければ幸いです。 use Text::ParseWords; } 各項目毎に処理したい、という意図はわかりました。 :hogehoge|perl)$/; それでいいと思いますよ?これをそのままコード化すると、こんな感じでしょうか。(No.1さんのとはちょっと結果が違います。) $data[$i]=~s/\s+//g; これと等価です。どこで「Shift_JIS からUTF-8へ変換」してますか? C  3, 「配列 Perl」に関するQ&A: perlの無名配列の使い方を教えて下さい。, どうもありがとうございます。 { a[]に格納できたのだから それを確認したいと思い sub get_data(){ my $input_file="input.csv"; example.log 最後の質問ですが、質問を誤解しているかも知れません。   chomp $data; my($file) = shift; 0, 回答 foreach $arg (@arg){ 恐れ入りますが、ご教授頂ければ幸いです。 0, 回答 okok ‚ªAˆêŽŸŒ³”z—ñ‚Å‚à“ñŽŸŒ³”z—ñ‚Å‚àA”z—ñ—v‘f‚Ì”z—ñ”ԍ†i“YŽšj‚Í0‚©‚ç—pˆÓ‚³‚ê‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚ĉº‚³‚¢B, “ñŽŸŒ³”z—ñ‚ÅŽg‚í‚ê‚鑽dƒ‹[ƒv‚͏d—v‚ÈŠT”O‚Ȃ̂ŁA‚µ‚Á‚©‚è‚Æ—‰ð‚µ‚ĉº‚³‚¢B@, ‚ł́AŽÀÛ‚É‚¨•Ù“–‚Ì”„‚èã‚°ŒÂ”‚ð‹‚ß‚éƒvƒƒOƒ‰ƒ€‚ðŽŸ‚©‚çì‚Á‚Ä‚¢‚«‚Ü‚µ‚傤B@, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. これは良くあるミスとして何が原因でしょうか?, No.2です。書き漏らしてましたが、エラーメッセージの内容がよくわからない時は 配列のソートには要素そのものを並べ替えるほかに、 ただ、作成しているものがどうしてもうまくいきません。ご助言いただければうれしいです。 @x = ("A", "B", "C", "B", "A"); sub get_rows() { print OUT $_; chomp ($_); ただいまC言語を勉強中の学生です。 hoge.txt 大阪,はじめまして A,Z,1 for(my $i=0;$i<@data;$i++){ if ($fh->open("$file")) { close FD; 結論を言えば、(a)のように書けばokです。 my($this) = shift; #コンストラクタでは、指定したファイルをオープンしてデータを2次元の配列に格納しておきます。 openの書式などは好みで変えてください。 @z = (4, 3, 5, 2, 1); Perl 5.8.5, Text::ParseWords を使ってこんなのはどうですか。(例ではparse_lineを使っています) 東京,よろしくお願いします。 ・$octetsを直接変換する { 実際にファイルを全て読み込まないと行数はわかりません。 my @words = &parse_line(',', undef, $_); close FILE; use warnings; のようになりますが、perlだと while () { $flag = 0; Perlで以下のようなことをしたいと考えています。 my @p; どのようにしたらよろしいでしょうか? @a = ; open(F,"$_"); ##openする。 A  1 どなたか教えていただけないでしょうか? open FH, "example.log" or die $! 文字コードがShift-JISのCSVファイルを読み込み、UTF-8のテキストファイルに出力するのに イメージとしては、読み込んだファイルを配列に入れて、一行づつ読ませ、キーワード「hogehoge」が現れたらそこでフラグを立て、それ以降の行を表示し、キーワード「perl」が現れた時点で表示を止めるという処理になるのかな?と思っています。 # この中で、2次元の配列に格納したい open (OUT, ">$output_file") or die "$! join(",", @data)とすれば、項目をカンマ区切りの文字列にすることができます。 ghi @y の同じ添字の要素を文字列比較して、それでも同じときには @z の同じ この部分は **** $_には何の影響も与えません **** 配列のソートには要素そのものを並べ替えるほかに、 って形にするとエラーになります。 open (OUT, ">:utf8", $output_file) or die "$! while ($data = ) { open (IN, $input_file) or die "$!...続きを読む, あの、私のや他の回答をよく読んで考えてください。 sub new { A,Y,4 $fh->close; for(my $i=0;$i<@data;$i++){ } } } for(my $i=0;$i<@data;$i++){ print $_; ##出力してみる。 2) 下から3行目: $y[$a] cmp $y[$a] ---> $y[$a] cmp $y[$b] この部分は **** $_には何の影響も与えません **** {{7,2},{5,3},{10.5},{8,4}} ↓ソート … } (重複行になる、と#1に書いたのはchompのことを失念していた私のミスです) あと#2にあったfrom_toの使い方。マニュアルをよく読みましょう お客様の許可なしに外部サービスに投稿することはございませんのでご安心ください。, http://www.kt.rim.or.jp/~kbk/perl5.005/perlref.h …, http://www.kt.rim.or.jp/~kbk/perl5.005/perllol.h …, Perl 複数ファイルの処理 log1.txt から log10.txt と10個ほどのファイルがあ, Can't use string ("0") as an ARRAY ref の原因について. 九州,"5,000円でお願いします". の $_ と同じようなもので、sort では同時に2つの要素を処理するため それでは、どうぞよろしくお願い致します。, > 一行づつ読ませ、キーワード「hogehoge」が現れたらそこでフラグを立て、それ以降の行を表示し、キーワード「perl」が現れた時点で表示を止めるという処理になるのかな?と思っています。 B  2 while (){ { } ; exit 0; return 0; このようになっているものと思います。   chomp $data; 実はコレに関しても分からない点があり、それは 目的の配列変数 $a = 0; printfで a[0]~a[10]を表示してみようとしたところ 変に文字化け 優先順位を設定してソートするようなイメージです。. } 0 / クリップ @x の各要素を指しています。配列名に @a または @b を使うと、各要素を ; @v = @v[@order]; @w = @w[@order]; script 二次元配列は普通の配列に、配列のリファレンス(C言語で言うポインタのようなもの)が並んでいるものなので、これを解釈してやる必要があります。 ソートを行っている部分は、<=> のところだけではなく cmp によっても (2)、上のようなプログラムの書き方で、配列aにテキストファイルから読み込んで格納できたようなのに、a[0]~a[10]をprintfしたときに $num = @list[1]; 上の質問と組み合わせて全てのファイルを開いて作業を行いたいので。 } 大阪,はじめまして このような場合、どういう風にすればいいのでしょうか? 環境: 1, 【募集】 print "行数:" . @dataを変更したのなら、出力するのは@dataでしょう。 my @data=split(/,/,$_); } close (IN); jkl とあります。つまり $flag = 0; とでもやれば、プログラム中はコードをあまり意識せずに文字列処理ができます。, あの、私のや他の回答をよく読んで考えてください。 $data[$i]=~s/\s+//g; } あるファイルの行数を取得する関数ってあるんでしょうか? while (<$fh>) { main(void) @v = (44, 33, 55, 22, 11); chomp; よって、** 出力に関することだけに注目したら ** ActivePerl v5.16.0を使用し、Encodeモジュールのfrom_toを使用しています。 hogehoge } 参考書などを見て 一次元配列へ格納する場合は できたようなのですが、今後このプログラムを発展させる段階で 二次元配列に文字列を foreach arg (*.data) $a++; 引数がリストなのでよくわかりません。   if  ($data eq "hogehoge") { $flag = 1 } $_は「while (){」ので1行読み込まれ、「chomp ($_);」で末尾の改行コードが削除されただけで、移行なにも変化していません。コードは入力のまま=Shift_JISです。それをそのまま出力すればShift_JISになるのが正解です。 学校の宿題の2次元配列のクイックソートがわかりません 投稿記事 by MORI » 1 year ago ランダムに生成されたint型のMAX×MAXの大きさ(MAXはマクロで定義)の2次元配列data[MAX][MAX]の中身をクイックソートで昇順にする課題が出ましたがわかりません。 ȇ作 Iem Ãライバ 7, Ǵ白 Ťトリ Ɯ年少 15, ȇ宅 Âレージ ƴ車 4, Regza Ť付けhdd ĺ換 13, ō士 Ű活 ȫ文数 6, Premiere Pro Âーケンス ǵ合 27, Ãボットテーブル ƛ式 Ŀ持 Ȳり付け 5, Dvd Shrink Iso Ȧつからない 24, Ǒ Ť Tv Ƙ画 4, Áさぎ ư ɣまない 4, Âロペットスカート ŭ供 Ľり方 6, Mhw Mod Discord 8, Áぶれ Âロナイン Ƃ化 7, Áどり Ãログ ĸ婦 24, Ž氏 Ļ良し Ȩ断 8, Androidstudio Https Ȩ明書 6, Âルピス ɣみ過ぎ ĸ痢 51, Django Form Field ȿ加 6, Snow ǔ Áすすめ 9, Âイアンラック Âャンプ Ãイアウト 4, NJ Ȃ骨 Ȇらみ 32, Identityv ǟ橋 Twitter 7, Ǭ五人格 żき継ぎ Ios Android 24, Macaque Monkey Ɂい 28, Galaxy S20 Bts Edition 4, Âルピス ɣみ過ぎ ĸ痢 51, Âンフォギアxd Shift ȵ動しない 11, Jin ĺ気記事ランキング表示 Áれない 4, Ãタモン ŷ穴 Ǣ率 10, Ɲ武鉄道 Ãーナス Âロナ 24, ǩ立nisa Sbi Ãンガード 49, ȥ松屋 B型ベビーカー ŏコミ 4, " />
Go to Top