環境: main() あるファイルの行数を取得する関数ってあるんでしょうか? jkl ($#a + 1) + "\n"; 格納できたほうが好都合なので 今模索しています。。。 my $input_file="input.csv"; $data[$i]=Encode::from_to($data[$i],'shiftjis','utf8'); #Shift-JISからUTF-8に変換 文字コードがShift-JISのCSVファイルを読み込み、UTF-8のテキストファイルに出力するのに { my($indx) = shift; } else { fprintf(stderr, "Can't open file\n"); } @x = ("A", "B", "C", "B", "A"); ### 少しマニアックな方法 "data" => "@data", そもそもperlではできないのでしょうか? int   elsif ($data eq "perl")    { $fl...続きを読む, 超初心者です。 ソート対象のリストのうちの2つの要素がセットされます。grep, map ; の $_ と同じようなもので、sort では同時に2つの要素を処理するため C  3, 「配列 Perl」に関するQ&A: perlの無名配列の使い方を教えて下さい。, どうもありがとうございます。   print if /^hogehoge$/ .. /^perl$/ and !/^(? } while () { 以下のように色々な方法があると思います hoge.txt open (FILE, "hoge.txt"); } 以下のようなCSVファイルがあります。 Perlで以下のようなことをしたいと考えています。 cshで書くと   chomp $data; 大阪,はじめまして よって、** 出力に関することだけに注目したら ** for(my $i=0;$i<@data;$i++){ って形にするとエラーになります。   elsif ($data eq "perl")    { $flag = 0 } 1) @sorted = sort { $a cmp $b } @x; # { $a cmp $b } は省略可 for(my $i=0;$i<@data;$i++){ push @data, [ split /\s+/ ]; } my($cols) = 0; 2) のソートブロック { $x[$a] cmp $x[$b] } の $x[$a], $x[$b] は、配列 return 0; 6 / クリップ ■CSVファイル "; while (){ 基本的な文法は頭に入れたつもりでしたが、まだポインタと ファイルの入出力に苦手意識があり 実際うまくできないでいるので {{5,3},{7,2},{8,4},{10,5}}, teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。, 評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。, 上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。, 組み込みの2次元配列なら、たぶんできないと思います。 このファイルの中身を読み込んで、配列 P[0]の C,Z,5 コマンド $arg example.log 配列のソートには要素そのものを並べ替えるほかに、 $fh->close; うまく実現...続きを読む, #include { $a <=> $b } # 数値比較 for(my $i=0;$i<@data;$i++){ 2次元配列a[n][2]を、ライブラリのsort関数を使ってa[i][0]の値をキーとしてソートすることはできますか?pairを使えばできますが、使わずにできるのでしょうか?, ex. open(F,"$_"); ##openする。 それでいいと思いますよ?これをそのままコード化すると、こんな感じでしょうか。(No.1さんのとはちょっと結果が違います。) ActivePerl v5.16.0を使用し、Encodeモジュールのfrom_toを使用しています。 1, 【募集】 ghi open FD, " $y[$a] cmp $y[$b] 二次元配列は普通の配列に、配列のリファレンス(C言語で言うポインタのようなもの)が並んでいるものなので、これを解釈してやる必要があります。 my($tbl) = {"name" => "$file", chomp ($_); abc Perlにですね。ないはずです。 ファイルに記述されている数値を足したり引いたりするのですが、forを使っての計算の際にファイルの行数が必要となりました。. my($this)->shift; } __DATA__ sub get_data(){ あと#2にあったfrom_toの使い方。マニュアルをよく読みましょう 今回練習しているのは 先に述べたように、テキストファイルに 二次元配列に格納したいのですが、何を勘違いしているのか、 3 / クリップ よって、** 出力に関することだけに注目したら ** if ((fin = fopen("test.dat", "r")) == NULL){ では、例えば以下のような表を配列で扱うことを考えてみます。 exit(1); } #get_data()でデータを取得する しましょう。, 配列が複数あって、キーを3つでソートする場合には ついでにPerlIOを使って   @{$p[0]} = ;  ・・(a) package main; 2次元配列a[n][2]を、ライブラリのsort関数を使ってa[i][0]の値をキーとしてソートすることはできますか?pairを使えばできますが、使わずにできるのでしょうか? ex. return $this->{data} use utf8; { my $input_file="input.csv"; ただいまC言語を勉強中の学生です。 print "行数:" . test open (IN, $input_file) or die "$!...続きを読む, あの、私のや他の回答をよく読んで考えてください。 }   if  ($data eq "hogehoge") { $flag = 1 } `wc -l file.txt` . open FH, "example.log" or die $! printf("File does not exist.\n"); ですが、文字コードの変換が項目毎に違うなんてことはまず無いでしょう。 ソートを行っている部分は、<=> のところだけではなく cmp によっても :hogehoge|perl)$/; (重複行になる、と#1に書いたのはchompのことを失念していた私のミスです) my @p; for(my $i=0;$i<@data;$i++){ ================================== Can't use string ("0") as an ARRAY ref while "strict refs" $num = @list[1]; 説明が下手ですいません。補足しますのでよろしくお願いします。, while(<*.data>) char a[10]; 67890 2) 下から3行目: $y[$a] cmp $y[$a] ---> $y[$a] cmp $y[$b] use Encode; open (OUT, ">:utf8", $output_file) or die "$! open FH, "example.log" or die $! ‚ª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@, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. $data[$i]=Encode::from_to($data[$i],'shiftjis','utf8'); #Shift-JISからUTF-8に変換 行数とはファイルに書かれた改行文字の個数ということなので sort { $x[$a] cmp $x[$b] or $y[$a] cmp $y[$b] or $z[$a] <=> $z[$b] } 0 .. $#x; これは良くあるミスとして何が原因でしょうか?, No.2です。書き漏らしてましたが、エラーメッセージの内容がよくわからない時は 2) @order = sort { $x[$a] cmp $x[$b] } 0 .. $#x; open FD, "