- 締切済み
Perlでのファイル入出力、処理方法
メモ帳で以下のようなプログラムを書きました。(file_1.plで保存しました) #!/usr/bin/perl $file="data.csv"; $cityfile="name.txt"; $outfile="data_out.csv"; open (IN, $file) or die "$!"; open (FILE, $file) or die "$!"; open (OUT, ">$outfile") or die "$!"; @city = <FILE>; ・ ・ ・ これをCygwinコマンド上で、 perl file_1.pl と入力し、Enterを押すと「No such file or directory at file_1.pl line 9.」と表示されます。 line9はopen (FILE, $file) or die "$!";という文です。 どこが間違えで、どのように修正すればよいのでしょうか。 よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- kmee
- ベストアンサー率55% (1857/3366)
> open (FILE, $file) or die "$!"; になっていて、ここで「No such file or directory」だから、みなさん「$fileで示すファイル data.csvがあるのか、場所は間違えていないか」と言っているのです。 > open (FILE, $cityfile) or die "$!"; が正解なら、確認するべきは「$cityfileで示すファイル name.txt があるのか、場所は間違えていないか」です。 > open (IN, $file) or die "$!"; で、data.csvはopenできているので、関係ありません。
- Tacosan
- ベストアンサー率23% (3656/15482)
んでこのファイルは全部あるのかぃ?
お礼
返信が遅れましたが、返答ありがとうございます。 name.txt を作成し、コマンドを実行するファイル内に置いたら、実行出来ました。
- Gletscher
- ベストアンサー率23% (1525/6504)
ファイルの内容ではなく、そのファイル名が存在するかどうかです。 >ホームディレクトリーの中に入れています・・・。 ホームディレクトリーではダメではないですか? ルートディレクトリーなら分かりますが・・・ 「No such file or directory 」 と言っているのだから、ファイルかディレクトリがないんですよね? なので、アナタは、「data.csv」がどこにあるか知っていても、file_1.pl から見て見えないところにあるのじゃないですか? data.csv と file_1.pl はそれぞれどのディレクトリにあるのですか? そして、アナタが file_1.pl を実行する時、ルートディレクトリはどこになっていますか? どこのディレクトリから実行しようとしているのですか? その3つが合っていないのだと思います。
補足
実行環境ですが、 windows7で、 ライブラリー→ドキュメント→ドキュメント内のフォルダにdata.csvとfile_1.plを置いています。
- Tacosan
- ベストアンサー率23% (3656/15482)
や, 一瞬そう思った (しそう書こうとした) んだけど, それならその前の行でエラーになるはずなんです>#2. ということで #1 に 2行目が追加されたのでした... と思ったけど, このスクリプトではエラーにならない. その「file_1.pl」とかいうファイル, 本当にこの通りですか? もしこの通りだとしたら, $cityfile って変数の存在意義は?
補足
返答ありがとうございます。 質問で記載したプログラムが間違っていました。 #!/usr/bin/perl $file="data.csv"; $cityfile="name.txt"; $outfile="data_out.csv"; open (IN, $file) or die "$!"; open (FILE, $cityfile) or die "$!"; open (OUT, ">$outfile") or die "$!"; @city = <FILE>; ・ ・ ・ line9はopen (FILE, $cityfile) or die "$!";という文です。これでも、「No such file or directory at file_1.pl line 9.」と表示されます。
- Gletscher
- ベストアンサー率23% (1525/6504)
そのままの意味だと思います。 「data.csv」が無いんじゃないですか?
補足
回答ありがとうございます。 CSVファイルの中身は、 1, 人名1, 年齢1, 出身地1 2, 人名2, 年齢2, 出身地2 3, 人名3, 年齢3, 出身地3 4, 人名4, 年齢4, 出身地4 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ となっています。ホームディレクトリーの中に入れています・・・。
- Tacosan
- ベストアンサー率23% (3656/15482)
・そのファイルはあるの? ・そのファイルでいいの?
補足
回答ありがとうございます。 CSVファイルの中身は、 1, 人名1, 年齢1, 出身地1 2, 人名2, 年齢2, 出身地2 3, 人名3, 年齢3, 出身地3 4, 人名4, 年齢4, 出身地4 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ となっています。
お礼
回答ありがとうございます。 name.txt を作成し、コマンドを実行するファイル内に置いたら、実行出来ました。