![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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ランキング
-
重複ファイル名ある場合ファイ...
-
HTMLのフォームで画像と文...
-
Perlでファイルを読み込みタグ...
-
フォルダーの深さの限界
-
水溶性の展色剤
-
powerpointでwebページとして保...
-
read() on unopened filehandle...
-
MPLABにおけるsyntax errorに...
-
並び方、
-
ダイアモンド演算子<>に対するb...
-
タブの色を変更する方法
-
Perl初心者です。同一データを...
-
指定の行数目から行を抽出する
-
perlのflock関数でロックをかけ...
-
Net::FTPを使いファイル一覧の...
-
perlのエディタでおすすめを教...
-
データファイルからのデータの...
-
csvで順番の入れ替え
-
レコードの書込み判断
-
Pythonでテキストを行数指定し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python renameについて
-
fgets で値が取得できない
-
window.open でのファイル指定方法
-
巨大なテキストの最終行を取得...
-
ファイル全てを .xlsm に変更し...
-
read() on unopened filehandle...
-
csvファイルの横方向への改行に...
-
VBAコードを張り付け後のエクセ...
-
JSP URLに表示される拡張子 .jsp
-
Firefox で file:// で始まる U...
-
drtファイルはどうしたら開...
-
並び方、
-
重複ファイル名ある場合ファイ...
-
VBA テキストファイルを読み取...
-
cgiでサーバーにファイルを追加...
-
HTMLのフォームで画像と文...
-
WindowsでPerlをする際,1行目の...
-
バイナリファイルの出力
-
Perlでのパーミッション変更の仕方
-
foreach内での変数の扱い?
おすすめ情報