
(1)のプログラムではtest.txtの内容を表示することができました。
(2)ではaaaが表示されつづけると思いますが、何も表示されません。
なにかまちがっていると思いますが、わかりません。
よろしくお願いします。
---------------------------------------------------------------------------------
(1)
---------------------------------------------------------------------------------
sub Main()
{
LAST:while(){
if(defined(open(FILE,"test.txt"))){
flock(FILE,1);
while(<FILE>){
print $_;
last LAST if($_ == 0);
}
}
sleep(1);
}
close(FILE);
}
&Main();
-------------------------------------------------------------------------------
(2)
-------------------------------------------------------------------------------
sub Main()
{
LAST:while(){
if(defined(open(FILE,"test.txt"))){
flock(FILE,1);
while(<FILE>){
print "aaa"; ←変更箇所
last LAST if($_ == 0);
}
}
sleep(1);
}
close(FILE);
}
&Main();
-------------------------------------------------------------------------------
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> (2)ではaaaが表示されつづけると思いますが、何も表示されません。
なぜ、そう思ったのでしょうか?
おそらく、その解釈が間違っています。
このプログラムで"aaa"が表示されつづけるのは、test.txtが一定の条件を満すときだけです。
その条件は「全ての行が、0個以上の空白+数字列で始まっていて、その数値が0でない」ことです。
実際のtest.txtはどうなっているのでしょうか?
(1)の方が「表示できた」と言っているので、1行だけのテキストですか?2行目以降があった場合、表示されない可能性が高いので。
> last LAST if($_ == 0);
この行の意味、わかってますか?
特に $_ == 0 、わかってますか?
「表示されない」の理由ははっきりしません。test.txtがopenできたら、最低1回は出力されます。
・test.txtのopenに失敗している
・"aaa"には改行が無いので、
aaaと表示 → プログラム終了 → プロンプト等が行頭から表示されてaaaを上書き(aaaが表示されてないように見える)
となっている可能性はあります。
そもそも、「LAST:while(){」で囲ってある意味がわかりません。何を意図したのですか?
closeの位置も変です。LAST:while()のループがlastで抜けなかった場合は、FILEをcloseしないままopenを繰り返すことになります。
test.txtの内容が変化しないのなら、何度もopenするのは無駄です。
No.1
- 回答日時:
「test.txtの内容を表示することができました」というのは, test.txt がどのような内容であり, それに対していかなる「表示」が得られたことをもって「表示することができました」と判断したのですか?
同様に, 「何も表示されません」というのは test.txt の内容がどうであって, それに対しどのような動作をしたことをもって「表示されません」と断じたのですか?
OS や Perl のバージョン, あるいは「どのようにプログラムを動かしたのか」なども書いてもらえませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- オープンソース stable diffusionのインストールがうまくいきません。 1 2023/06/20 13:09
- その他(プログラミング・Web制作) pythonのエラーについて 2 2022/08/17 17:17
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- その他(プログラミング・Web制作) I2C接続のLCDディスプレイを使う 2 2023/05/01 17:15
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- Ruby pythonエラー 4 2022/11/11 19:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「パスが見つかりません」とい...
-
シュワルツ変換の不具合
-
絶対+相対アドレスから絶対ア...
-
繰り返しファイルをアップロー...
-
system関数と引数について
-
CSVファイルのフォーマット
-
このスクリプトの意味を教えて...
-
GDモジュールについて
-
文字列の抽出がうまくできません
-
ファイルの読み込みと置き換え
-
パラメーターについて
-
パスから最後のディレクトリだ...
-
FlashよりLoadVarsクラスを使用...
-
番号をつける
-
ExcelをCSV書き出す場合のシー...
-
どのようなプログラムをつくれ...
-
perlでの三次元配列の作り方
-
ディレクトリー内のリスト出力...
-
外部サーバーにあるファイルを...
-
Perlでのforeach文の挙動がわか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ifstream を利用した1行分のテ...
-
***.cgiの中身は第三者から見ら...
-
ファイル名を複数個配列で確保...
-
C++でのテキストファイル読み込...
-
ファイル名に日付を入れてアッ...
-
「パスが見つかりません」とい...
-
VBSの処理について
-
perlで該当する行のみ別ファイ...
-
特定のデータを更新する
-
perl での文章の取得について
-
今、「Python 3.8 32-bit」を使っ...
-
shellのコマンド deffの差分の...
-
perlで先頭の数値をみて昇順に...
-
ファイル読み込みマッチングに...
-
テキストファイルの各行を配列...
-
テキストファイルになにも入っ...
-
一行だけ読込
-
ファイル操作
-
ファイルから検索条件を読み込...
-
perlでCSVをソートする方法につ...
おすすめ情報