
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[Perl]ファイル出力のエンコー...
-
sprintfについて
-
エクセルVBAで素数だけを出力す...
-
ファイル出力の改行コードをLFに
-
重複するデータを抽出できる秀...
-
awkスクリプトでダブルクォーテ...
-
エクセルVBA コードが同じでも...
-
MATLAB グローバル変数の宣言
-
ファイル全てを .xlsm に変更し...
-
ExcelをCSV書き出す場合のシー...
-
openした後、closeしないでプロ...
-
JavaでCSVファイルを高速に読む...
-
複数ファイル?処理させる方法...
-
VBAでCSVファイルを途中行まで...
-
[Perl]Shift-JISのXMLを解析する場
-
「パスが見つかりません」とい...
-
csvファイル改行コードの置換に...
-
外部サーバーにあるファイルを...
-
ifstream/ofstream について
-
【Access2003】VBAでタブ区切り...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
大量メールの任意のヘッダだけ...
-
sprintfについて
-
文字化け
-
重複するデータを抽出できる秀...
-
sprintfで10進数を桁数指定で16...
-
foreachによるカウント方法
-
IEのリロードボタンを押すとデ...
-
2つ質問があり、まず1つ目な...
-
SYSログ出力時の文字化けについて
-
C言語の問題について
-
同じ文なのにちがうように表示...
-
特殊文字の数を調べる
-
DOSコマンドで、標準出力を出力...
-
ドメインからIPアドレスあるい...
-
log2の「正確な」計算方法
-
自動更新
-
CSVファイルのダウンロードにつ...
-
Perl<->Oracle間での文字化けに...
-
この記述というのは?
おすすめ情報