
perlの勉強を始めたばかりの者です。
perlでcsv(約5000行)を読み込み、それを出力させたいのですが、以下のプログラムで実行してみるとcsvの最後の行しか出力してくれません。一行ずつすべての行を出力したいのですが...画像のcsvはエクセル(Mac)で開いています。
#!/usr/bin/perl
$inputfile="aaa.csv";
open (FILE, $inputfile) or die "ありません";
while (<FILE>) {
print $_;
}
close (FILE);
よろしくお願いします

A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
その確認って、具体的にどうやってやりましたか?
実行したときの画面表示だけだとしたら
aaa.csvの改行コードが CR になっている
端末では、通常、CR は「行頭にカーソルを移動する」だけで改行しない
そのため、画面上が後から出力したものに上書きされたように見える
→ 画面上には、最後の行だけしか出力されてないように見える
ということが考えられます。
・ターミナルで file コマンドを使って file aaa.csv として、改行コードについての情報を得る(表示されないこともある)
・ターミナルで od コマンドを使って od -c aaa.csv でファイルのダンプが出力される。このとき、改行コードは \r とか \n とか表示されるので、それがどうなっているかを確認する。
・nkf をインストールしてあるなら、 nkf --guess で改行コードを調べる。
などで、 aaa.csv の改行コードを確認してください。
また、 CR だったとすると別の問題があります
<FILE> は 改行文字を含めた1行を読み込みます。
現行のMacはUNIX系OSが採用されており、標準の改行コードは LF です。
よって、 CR は「ただの文字」として扱われるので、1行ずつ読むつもりで全部を一気に読みこんでしまいます。
1行ずつ読み込むには
・LF で保存する
・openの3引数版を使って、改行コードを指定する
・特殊変数で設定を変える
http://perldoc.jp/docs/perl/5.20.1/perlvar.pod#S …
> IO::Handle->input_record_separator( EXPR )
> $INPUT_RECORD_SEPARATOR
> $RS
> $/
> 入力レコードセパレータで、デフォルトでは改行文字。 これは Perl での「行」とは何か、ということに影響を与えます。
等が必要です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 値の取り出し方について教えて下さい。 1 2023/03/31 13:30
- Visual Basic(VBA) VBAで出力したCSVファイルの先頭にカンマを挿入したい 5 2022/10/14 12:20
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- その他(Microsoft Office) VBA CSV出力について 3 2023/04/19 14:14
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つ質問があり、まず1つ目な...
-
IEのリロードボタンを押すとデ...
-
CGI.pmでHTMLのコメントタグを...
-
perlを使ってファイル分割
-
CGI.pmで<button>タグは出力で...
-
大量メールの任意のヘッダだけ...
-
どのようなプログラムをつくれ...
-
perl で作成された文書と知るに...
-
データ項目の並び替えについて
-
フォルダに入っているファイル...
-
番号をつける
-
perlでの三次元配列の作り方
-
正規表現に関して
-
Perlでのforeach文の挙動がわか...
-
ディレクトリー内のリスト出力...
-
レコードの書込み判断
-
cgiでdocument.writeの書き出し
-
パラメーターについて
-
Perl→exe
-
ListBoxのデータを高速でファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
重複するデータを抽出できる秀...
-
awkスクリプトでダブルクォーテ...
-
sprintfについて
-
DOSコマンドで、標準出力を出力...
-
文字コードの変換(Shift-JISか...
-
Perl<->Oracle間での文字化けに...
-
[Perl]ファイル出力のエンコー...
-
エクセルVBAで素数だけを出力す...
-
データの選択
-
apacheの動作について
-
「print関数は出力先のファイル...
-
教えて!perlから.exeファイル...
-
ファイル出力の改行コードをLFに
-
PerlからのCSV出力
-
Active Perlでsleepを使う。
-
[awk]uniq -cで複数ファイルの...
-
バッチファイルで、記号を含む...
-
EUCで出力されるプログラムをS-...
-
htmlから、ファイル、もしくはC...
-
リファレンスについて。
おすすめ情報