
指定したフォルダ内にあるcsvファイルのデータを
指定したhtmlファイルに出力するプログラムを書いているのですが、
下記のままだとcsvファイルにあるすべてのデータをとってきてしまいます。実現させたいことは「指定したフォルダ内にあるcsvファイル2行目のデータだけファイル出力する」というものです。
どなたかご協力お願いします。
#!/usr/bin/perl
#--------------------------------------------------------------#
# ディレクトリを開く
#--------------------------------------------------------------#
opendir(DIR,"test/");
#--------------------------------------------------------------#
# 出力ファイル名を指定
#--------------------------------------------------------------#
$dest = "test.html";
open (OUT, ">$dest") or die "$!";
#--------------------------------------------------------------#
# 出力ファイルにhtmlを出力
#--------------------------------------------------------------#
print OUT '<html>
<head>
<title>無題ドキュメント</title>
<style type="text/css">
<!--.style1 {color: #FFFFFF}-->
</style>
</head>
<body>
<table width="419" height="105" border="0" cellpadding="0" cellspacing="0">
<tr>
<th bgcolor="#000000"><span class="style1">名前</span></th>
<th bgcolor="#000000"><span class="style1">住所</span></th>
<th bgcolor="#000000"><span class="style1">性別</span></th>
</tr>';
#--------------------------------------------------------------#
# ディレクトリにあるファイル名を取得
#--------------------------------------------------------------#
while ($filename = readdir(DIR)) {
# ディレクトリにあるファイルパスを取得
$path = "test/$filename";
if(-f $path) {
# ファイルオープン
open (IN, $path) or die "$!";
while (<IN>) {
# カンマ区切りでデータを取得&改行削除
chomp(@data = split(/,/, $_));
print OUT "<tr>\n";
# 各行の3つのカンマ区切りデータを取得
print OUT "<th bgcolor=\"#666666\">",$data[0],"</th>\n<td>",$data[1],"</td>\n<td>",$data[2],"</td>\n";
print OUT "</tr>\n";
}
close(IN);
}
}
#--------------------------------------------------------------#
# ディレクトリを閉じる
#--------------------------------------------------------------#
closedir(DIR);
print OUT "</table>
</body>
</html>";
#--------------------------------------------------------------#
# ファイルを閉じる
#--------------------------------------------------------------#
close(OUT);
No.4
- 回答日時:
#2です。
どうやらchompの位置がわるいようでした。
# カンマ区切りでデータを取得&改行削除
chomp($line[1]);
@data = split(/,/, $line[1]);
としたら動きます。
No.2
- 回答日時:
open (IN, $path) or die "$!";
while (<IN>) {
# カンマ区切りでデータを取得&改行削除
chomp(@data = split(/,/, $_));
print OUT "<tr>\n";
# 各行の3つのカンマ区切りデータを取得
print OUT "<th bgcolor=\"#666666\">",$data[0],"</th>\n<td>",$data[1],"</td>\n<td>",$data[2],"</td>\n";
print OUT "</tr>\n";
}
close(IN);
↓
open (IN, $path) or die "$!";
@line = <IN>;
close(IN);
# カンマ区切りでデータを取得&改行削除
chomp(@data = split(/,/, $line[1]));
print OUT "<tr>\n";
# 各行の3つのカンマ区切りデータを取得
print OUT "<th bgcolor=\"#666666\">",$data[0],"</th>\n<td>",$data[1],"</td>\n<td>",$data[2],"</td>\n";
print OUT "</tr>\n";
ご回答ありがとうございます。
試してみたんですが、
chomp(@data = split(/,/, $line[1]));
の行でシンタックスエラーとなっていまいました。
なぜでしょう???
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#!/usr/bin/perlで書きだしたCG...
-
perlのrequireの動き方について...
-
perl の open について教えてく...
-
ファイルをディレクトリ分配の...
-
perlでリテラル値はメモリにど...
-
Perlでファイルの末尾から指定...
-
テキストファイルで提出とは?
-
Perlプログラムについてファイ...
-
[perl] perlで書き込み中に、PC...
-
Perl言語について。
-
アルファベットに付いて質問し...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perlで特定行から特定行までを...
-
データ項目の並び替えについて
-
ファイルの入出力2
-
csvファイル(表計算的な処理)
-
データファイルからのデータの...
-
Cシェルでのファイル編集について
-
番号をつける
-
コマンド上の行間
-
データベースを使わず、テキス...
-
CSVファイルのデータの行数を取...
-
文字化け対策
-
Perlを利用してテキストフ...
-
CGIでのgrep関数においての質問
-
pealを用いたcsvファイルの抽出
-
perlでファイルの比較
-
perl:パターンマッチを使ったif...
-
ファイル分割2
-
MATLAB std::exceptionエラー
-
FTP接続時失敗時、接続先名をcs...
-
Perl 順位の重複
おすすめ情報