
perl でファイルを開きたいのですが、なぜか開けません。何がいけないのでしょうか?エラーは、
Name "main::file" used only once: possible typo
とでます。エラーを見るかぎり、コードに間違いはなく、apacheかOSに何か原因があるのではないかとおもうのですが、悩んでいます。OSはubuntuです。
#!/usr/bin/perl -w
open (IN, "<test.txt") or die ("Could not open $file: $!");
while(<IN>)
{
print "$_";
}
close (IN);
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
> エラーを見るかぎり、コードに間違いはなく、apacheかOSに何か原因があるのではないかとおもうのですが
その認識が間違いです。明らかにコードの間違い(あるいは、間違いが疑われる)ものです。
> "Could not open $file: $!"
とありますが、このスクリプトのどこにも $file なる変数が定義や代入された形跡がありません。
Perlとしては、
未定義値→文字列としては空文字列なので
Could not open : ....
等と表示されるでしょうが、これがプログラマの望んだ動作なのか、
Could not open file : ....
と表示させたいのか($が余分)
Could not open $file : ....
と表示させたいのか($に\を付けてエスケープする)
$file="test.txt" などとして
< open (IN, "<", $filetest.txt") or die ("Could not open $file: $!");
として、エラーメッセージを
Could not open test.txt : ....
としたいのか、がわかりません。
なので 「typo(=打ち間違い)ではないですか?」と警告を出しているものです。
どのケースかによって、それにあった対処をしてください(あるいは、ここに無いことが目的かもしれませんが)
言語としての手軽さが犠牲になりますが、このような「使ってない変数やリストを使ってしまう」のを防ぐために、 use strict ; して使う変数はmy 等で宣言する、ということも必要です。特に大規模なスクリプトになる場合は
ご回答ありがとうございます。原因はどうやら環境変数の指定をして、パスを通してやることだったみたいです。
>言語としての手軽さが犠牲になりますが、このような「使ってない変数やリストを使ってしまう」のを防ぐために、 use >strict ; して使う変数はmy 等で宣言する、ということも必要です。特に大規模なスクリプトになる場合は
につて、もっと勉強しておきます。
No.2
- 回答日時:
変数 $file が定義されていないからです。
#!/usr/bin/perl -w
my $file; ←追加
open (IN, "<test.txt") or die ("Could not open $file: $!");
while(<IN>)
{
print "$_";
}
close (IN);
ではどうでしょうか。
↓こちらを読む事をお勧めします。
http://www.geocities.jp/ky_webid/perl5/005.html
No.1
- 回答日時:
#!/usr/bin/perl -w
open my $fh, "<", "test.txt" or die "$!";
while(<$fh>)
{
print $_;
}
close ($fh);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- その他(プログラミング・Web制作) pythonのエラーについて 2 2022/08/17 17:17
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
window.open でのファイル指定方法
-
WindowsでPerlをする際,1行目の...
-
fopen64について
-
巨大なテキストの最終行を取得...
-
fgets で値が取得できない
-
drtファイルはどうしたら開...
-
どこがおかしいのか教えてくだ...
-
MATLABのm-fileについて
-
perl ファイルが開かない
-
一つのテキストファイルと複数...
-
ファイルからある文字列の個数...
-
エクセルVBA コードが同じでも...
-
DBMとハッシュ
-
C言語の問題について
-
VBAでCSVファイルを途中行まで...
-
Perl で ディレクトリ及びサブ...
-
ReadLineでの読み出し行を指定する
-
batファイルでrenameができませ...
-
readdir()で得られるファイル・...
-
Perlの変数に文字数制限(容量...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.open でのファイル指定方法
-
python renameについて
-
fgets で値が取得できない
-
行を指定して削除する方法PERL
-
csvファイルの横方向への改行に...
-
drtファイルはどうしたら開...
-
MATLABのm-fileについて
-
JSP URLに表示される拡張子 .jsp
-
オブジェクト作成の順番
-
WindowsでPerlをする際,1行目の...
-
ファイル検索の条件について
-
Perl の「stringify」の意味に...
-
perl ファイルが開かない
-
Javaのフォームの入力欄に文字...
-
一つのテキストファイルと複数...
-
MP3情報の表示
-
PerlでのUseless use...
-
巨大なテキストの最終行を取得...
-
ファイル全てを .xlsm に変更し...
-
MySQLにバイナリデータを正常に...
おすすめ情報