Perlに関する質問です。


csvファイルをPerlで処理しないといけないんですが、Perl初心者のため処理に困っています。

csvファイルには
ID,X座標,Y座標
0,1.43,5.32
1,3.23,6.33
2,4.98,7.88
3,6.22,9.42
という感じでID10000までのデータが入っています。

IDごとにY座標-X座標を出力させ、またID1のX座標とID0のX座標の差、ID2のX座標とID1のX座標の差、ID3のX座標とID2のX座標の差・・・を出力させたいです。

とても初歩的な質問かもしれませんが、ご教授お願いします。

回答の条件
  • 1人2回まで
  • 登録:2007/11/04 21:27:00
  • 終了:2007/11/05 01:15:59

回答(1件)

id:thrillseeker No.1

thrillseeker回答回数328ベストアンサー獲得回数372007/11/04 22:12:17

ポイント60pt

以下を scipt.pl として保存し、csv のファイル名を引数に与えて実行して見て下さい。

#! /usr/bin/perl

while (<>) # 引数で与えられたファイルから1行ずつ読み込んで処理する
{
    next unless (/^\d/); #数字で始まらない行は飛ばす
    chomp; #行末の改行文字を削除
    my ($id, $x, $y) = split(",",$_); #行を分割して読み込み
    print $y-$x,","; 
    print $x-$x_prev if ($x_prev != undef); # 最初のデータ行では実行されない
    $x_prev = $x;
    print "\n";
}
id:ishikennn

ありがとうございます。無事動きました。

ファイルに出力できるようにプログラムを書き換えてみようとおもいます。

2007/11/04 22:55:25
  • id:thrillseeker
    ファイルに出力するには、コマンドラインで
    script.pl data.csv > result.csv
    とやると簡単ですよ。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません