
(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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlのワンライナーをスクリプ...
-
Pythonでテキストを行数指定し...
-
あるファイルないから日付指定...
-
一行だけ読込
-
vba dir の相対パス
-
VBAで巨大なファイルの途中から...
-
エクセルVBA コードが同じでも...
-
CSVが可変長の場合の検索方法
-
MATLAB グローバル変数の宣言
-
VBAでCSVファイルを途中行まで...
-
合致する番号のデータを抽出す...
-
window.open でのファイル指定方法
-
batファイルでrenameができませ...
-
タブの色を変更する方法
-
Perlで特定行から特定行までを...
-
close()で例外が投げられる理由
-
Perlで特定文字列から特定文字...
-
VBAでCSVファイルの特定行を書...
-
MATLABのm-fileについて
-
C言語で特定の行を抽出する方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル名を複数個配列で確保...
-
Pythonで非日本語のUnicode文字...
-
「パスが見つかりません」とい...
-
C++でのテキストファイル読み込...
-
Perl エラーログを指定の場所...
-
ファイル名に日付を入れてアッ...
-
Pythonでテキストを行数指定し...
-
ifstream を利用した1行分のテ...
-
perlでCSVをソートする方法につ...
-
Perlによるディレクトリ内の連...
-
あるファイルないから日付指定...
-
連番のファイルを何個も開きたい
-
テキストファイルの各行を配列...
-
perlで先頭の数値をみて昇順に...
-
Perl 重複カウント 上位3名
-
MATLABでカーブフィットしたデ...
-
Fortranで1行飛ばして読み込む方法
-
while文がうまく動かない
-
Pythonでegrep機能をつかいたい
-
配列を用いた文字置換
おすすめ情報