• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CSVファイルからdataをcgiに取り込みたい。)

CSVファイルからcgiにdataを取り込む方法

makitoの回答

  • ベストアンサー
  • makito
  • ベストアンサー率21% (3/14)
回答No.1

俺も初心者なんであんま自信ないですが、こんなのどうでしょう? ------------ open(IN,"data.csv"); flock(IN,2); @line = <IN>; flock(IN,8); close(IN); $cnt = 0; foreach(@line){ ($sina[$cnt],$jpg[$cnt],$pr[$cnt],$kakaku[$cnt]) = split(/\,/,$_); $cnt++; } --------------------- $cntにデータの数が入ります。 foreach(@line)で配列の0番目から順に$_に代入して、反復実行します。

Iam2888
質問者

お礼

ありがとうございます。非常に助かりました。 初心者にはシンプルでわかりやすい記述で、 なんにでも応用が利きそうです。 また、よろしくお願いいたします。

関連するQ&A

  • CGI(Perl)でWeb上から作成したファイル(csvなど)をsendmailで添付

    宜しくお願いします。 CGI(Perl)を使い、Web上でメンバー登録などをし、 個人データなどをcsvファイルにして、sendmailで 管理者へ送りたいのですが、 添付ファイルとして、こういったファイルを送る方法をお教え下さい。

    • ベストアンサー
    • CGI
  • CSVデータの並び替えについて

    はじめまして! 表記のとおり、CSVファイルのデータを以下のように整形して新しいCSVファイルを作成したいと考えています。 プログラミングはperlとPHPを多少かじったくらいですが、それらで有効なスクリプトを作成することは可能でしょうか?? ■元データの例 "sakura","5","6","2" "kiri","5,"3","10" "bara","5,"3","10" ■新しいCSVファイルの例 "bara","5,"3","10" "tanpopo","0","0","0" "sakura","5","6","2" "kiri","5,"3","10" 1番初めの列をキーとして、並び替える。 (並び順はあらかじめ決まっている。) 元データに存在しないキーは、2列目以降の値に0を入れて行を挿入する。(上記例ですとtanpopoが当てはまります) どなたかヒントだけでもいいので、ご教示頂けると幸いです。 よろしくお願いします。

  • CSVファイルにあるメールアドレスの重複チェック

    初めて投稿させていただきます、perl初心者です。 イベントの登録とデータ集計がしたくて、色々なメールフォームCGIを 比較検討しております。 今評価中のプログラムはデータをCSVにかき出してくれるのですが、メールアドレスの重複チェックが付いていません、そこでこのプログラムにメールチェック機能を追加したいと考え、色々見て廻ったのですが、良く分かりませんでした、 頭の中では書き出されたCSVファイルを読み込んでメールの列だけ抜き出し、それをチェックすれば良いのかなと考えています。 perlの本やohzakiさんのPerlメモ等も見ましたが良く分かりません。 何方か分かりやすく教えて頂けると助かります。

    • ベストアンサー
    • Perl
  • 0をデータに納めたい

    cgi(perl)でデータを整理し、格納しようとしています。 値が0という実数をファイル(csv)に格納したいのですが、"0"としても'0'としてもcsvファイルを開いて確認してみるとそのセルには何も入っていません(Null扱いになっているようです) データとして0を入れたい場合どうすればいいのでしょうか。 なお、全角の0ではなく半角の0を格納したいです。

    • ベストアンサー
    • Perl
  • perl内のhtml文を、ループさせたいのですが、これってできないんでしょうか?

    たびたび申し訳ありません。周りに聞く人もいなく、まったくの初心者ですので、なにとぞお願いいたします。 下記の「ここから~ここまで」の$iの値を変えながらループさせたいのですが、まったくうまくいきません。なにかいい方法あったら教えてください。 それとも、こんな書き方じゃダメなんでしょうか? #!/user/bin/perl open(IN,"data.csv"); #flock IN,2; @line = <IN>; #flock IN,8; close(IN); $cnt = 0; foreach(@line){ ($sina[$cnt],$jpg[$cnt],$pr[$cnt],$kakaku[$cnt]) = split(/\,/,$_); $cnt++; } print<<"EOF"; Content-type: text/html <HTML> <HEAD> <TITLE>やぁ!</TITLE> </HEAD> <BODY> EOF ###################ここから print<<"EOF"; <TABLE border="1"> <COL span="4" width="100"> <TBODY> <TR> <TD width="300">$sina[$i]</TD> <TD width="300">$jpg[$i]</TD> <TD width="300">$pr[$i]</TD> <TD width="300">$kakaku[$i]</TD> </TR> </TBODY> </TABLE> EOF ##################ここまで print<<"EOF"; </BODY> </HTML> EOF

    • ベストアンサー
    • CGI
  • csvファイルを読み込んで処理するcgiでエラーが

    次のTESTプログラムのエラーを教えてください。また、csvファイルの格納先を教えてください。 いまはcgiと同じc:\www\homeの同じ場所に置いてあります。 average.csv 山田,80,75,69 鈴木,55,70,75 佐藤,71,73,89 花田,60,65,63 中島,66,78,82 鶴岡,91,90,88 average.cgi #!c:/strawberry/perl/bin/perl.exe #CSVデータを読む $i=0; $all_koku = 0; $alll_ei = 0; $all_suu = 0; open(IN,"average.csv"); while(<IN>){ #1行を分解 ($name,$koku,$ei,$suu) = split(/,/); #科目ごとに合計額を計算 $all_koku += $koku; $all_ei += &ei; $all_suu += $suu; #人数を計算 $i++; } close(IN); #科目ごとの平均点を算出 $avr_koku = int($all_koku / $i); $avr_ei = int($all_ei / $i); $avr_suu = int($all_suu / $i); #計算結果 print "Content-type: text/html\n\n"; print "<html><body>\n"; print "平均点<br>\n"; print "国語:$avr_koku点<br>\n"; print "英語:$avr_ei点<br>\n"; print "数学:$avr_suu点<br>\n"; print "</body></html>\n"; これをlocalhost/average.cgiで実行すると次のようなエラーになります。 内部サーバーエラー サーバは、内部エラーが発生したか構成が正しくなく、リクエストを完了できませんでした。 サーバ管理者に連絡してエラーが発生した時間を通知し、エラーの原因になった可能性があること行っているかもしれない何でもしてください。 このエラーの詳細については、サーバのエラーログを入手できる場合があります。 おんぶにだっこで申し訳御座いませんが先へ進めないのでどうかよろしくご指導ください。

  • こういうのってCGIでできるんですか?

    よくホームページ上のフォームで入力したデータがそのホームページ上に反映されるものがありますが、こういうのってCGIでやるんでしょうか? さらに踏み込んだものになると、家庭教師サイトなどでは検索条件を入れることでそれにあったデータのみが呼び出されたりしますが、これもCGIで可能でしょうか? もしできるなら、何かよい参考文献、フリーCGI等ありましたら教えてください。 ちなみにPerlの知識はまったくありません。 よろしくお願いします。 例:http://kyujin.yuntaku.com/index.htm   http://www.ka-net.com/cgi-bin/apply-pc/app-02.cgi?1

    • ベストアンサー
    • CGI
  • CSVデータの行と列が一致した値を返すフリーのCGIを探しています。

    CSVデータの行と列が一致した値を返すフリーのCGIを探しています。 分かるかとは思いますが、例として、それぞれの友達の家までの距離(m)とした場合、以下のような表(CSV)ができるかと思います。※数値はデタラメです。 ■■|A君|B君|C君|D君|E君 A君|----|0100|0050|0800|0200 B君|0100|----|1000|1020|0700 C君|0050|1000|----|1340|0020 D君|0800|1020|1340|----|1000 E君|0200|0700|0020|1000|---- この場合、以下のようなフォームから、行と列の一致する値を表示させたいのですが・・ <select name="select1"> <option value="A君">A君</option> <option value="B君">B君</option> <option value="C君">C君</option> <option value="D君">D君</option> <option value="E君">E君</option> </select>の家から <select name="select2"> <option value="A君">A君</option> <option value="B君">B君</option> <option value="C君">C君</option> <option value="D君">D君</option> <option value="E君">E君</option> </select>の家までは <input id="submit" value="検索" name="submit" type="button"> 出力値=0100メートルです 通常レコードは、行1つに対して全ての列を表示されることになると思うので、例でいけば全部で25個のデータを用意しておいて、そのデータを呼び出すか、A君から5人の家までのデータ(列)を表示させれる方法になると思います。 シンプルに、行(X軸)と列(Y軸)を表示(X:Y)させるようなフリーCGIがあれば、Perl、PHP問いませんので教えてやってください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • データの抜き取りとcsv出力

    ---- Frame 273 (126 bytes on wire, 126 bytes captured) Arrival Time: Dec 12, 2007 14:24:53.169702000 Last SR timestamp: 1840388505 (0x6db21999) Delay since last SR timestamp: 174981 (2669 milliseconds) ---- といった形式のデータの塊が1つのファイルに複数存在しているのですが、 このデータの中のArrival Time:,Last SR timestamp:,Delay since last SR timestamp:の値をそれぞれ抽出して、上記の例だとDec 12, 2007 14:24:53.169702000,1840388505 (0x6db21999),174981 (2669 milliseconds)といったようなcsv形式で1ファイル分のデータを出力させたいのですが、perl初心者なもので、手におえないでいます。 申し訳ありませんが、どなたか教えていただけないでしょうか。 よろしくお願いいたします。

  • Perlでのファイル内データ処理方法について

    プログラミングを始めたばかりです。 Cygwin上でPerlを行っています。 下に示すように、計算プログラムの中にデータを記入し、そのデータを処理することは出来たのですが、外部のファイルを読みそのデータを処理する方法が分かりません。 # y = ax + bを求める @x=(1,2,3); @y=(1,4,9); for($i=0;$i<$n;$i++){ $A = $A + ($y[$i] * $y[$i]); $B = $B + ($x[$i] * $x[$i]);   ・   ・   ・ $a=・・・ $b=・・・ print("a=$a,b=$b"); パールファイル(.pl)内に @x=(1,2,3); @y=(1,4,9); のように記載すると、データが変わるたびにファイル内の数値を入れ替えないといけないと思うのですが、cygwinのウィンドウに、 $ ./lesson.pl 10 <data1.csv のように入力しEnterすると、ファイル内の数値を入れ替えないで指定したファイル(ここではdata1.csv)のデータが処理されると思うのですが、その場合パールファイルをどのように記述すればよいのでしょうか。また、cygwinのウィンドウにどのように入力すればよいのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl