- ベストアンサー
Perlの処理待ちコマンドとは?
- Perlの処理待ちコマンドについて学んでいます。ファイルを実行すると一瞬で終わってしまい、結果の確認ができません。処理待ちさせて確認できる方法を知りたいです。
- Perlの処理待ちコマンドを知りたいです。現在は無限ループで代用していますが、より正統な方法を教えていただきたいです。
- Perlの処理待ちコマンドについて教えてください。また、一定時間待つコマンドも知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
秒単位のウェイトならsleep関数でいけますが、ミリ秒以下のウェイトは、 mibusysさんが調べられた方法を取るの一般的だと思います。 ご質問のPerlでのpauseに相当する関数ですが、標準ではないと思います。 CPANで探せばあるとは思いますが、そこまでする必然性があるかというところですね。 例えば、CPANにあるTerm::ReadKeyを用いて、 use Term::ReadKey; ReadMode 'cbreak'; print '処理が終わりました。任意のキーを押してください。'; ReadKey(0); とすれば、pauseに相当する動作が得られるかもしれません。 (未検証です) 結局、質問欄に書かれている<STDIN>の方法が一番手軽かもしれません。 私もまだPerlの中級の域にも達していないので、熟練者さんの回答をもう少し待たれて みてください。
その他の回答 (2)
- ryu_chan
- ベストアンサー率37% (69/186)
CPANから取ってこなくてもTerm::ReadKeyは標準で入ってますね。 No.2のコードを試したところ、自分の環境では、リターンキーは反応ありませんでしたが、 その他のキーはきちんと応答していました。
お礼
ありがとうございました。
- ryu_chan
- ベストアンサー率37% (69/186)
まずは、myperl.batというバッチファイルを作ってください。 このファイルの置き場所はどこでもいいです。 中身は以下です。 -- myperl.bat ----------------- @echo off perl %* pause ------------------------------- 次にエクスローラーを立ち上げてください。 (Win+Eで立ち上がります。 WinキーはCtrlキーとAltキーの近くにあるWindowsロゴのキーです。) エクスプローラーのメニューバーから、ツール → フォルダ オプションを選び、 ”ファイルの種類”タブをクリックしてください。 拡張子が”PL”を探し、それを選択してから、[変更]ボタンをクリック。 (拡張子”PL”がなければ、[新規]ボタンをクリックして作成) 次に、[参照]ボタンをクリックし、先ほど作成した”myperl.bat”を選ぶ。 [OK]ボタンをクリックして設定完了。
お礼
なるほど。面白い代替案ですね。 ありがとうございました。 あれから自分でも少し調べたのですが 他言語のsleepに該当するコマンドとしては 「Time::HiResモジュール」なるものを使用し 「usleep (マイクロ秒)」と書くか、 「select(undef, undef, undef, 秒数);」 と書くかのどちらかがよく使われるようですね。 ニーズが高いことが分かってるんだったら コマンド作ればいいのにと思ってしまいました。
補足
もともとの質問は、「他言語のpauseに相当するPerlのコマンドは何か」 という趣旨でした。今回のご回答から判断するに、 「Perlには処理待ちをするコマンドは存在しない」ということなのでしょうか? この点を明確にしていただきたいです。 よろしくお願いします。
お礼
>秒単位のウェイトならsleep関数でいけますが おぉ。普通にsleepというものもあるのですね。 ありがとうございます。 >ご質問のPerlでのpauseに相当する関数ですが、標準ではないと思います。 無いのですか…。これは大変助けになりました。 あるかないかわからない状態で探し続けるのは大変ですので。 >例えば、CPANにあるTerm::ReadKeyを用いて、 >とすれば、pauseに相当する動作が得られるかもしれません。 これやってみました。大体動きました。 スペースバーや通常の文字を入力すると一発で終了します。 しかしEnterキーの場合、なぜか4回押下しないと終了しません。 「<STDIN>」は記述はシンプルですが、対応キーが少ないので ReadKey(0);のほうを今後使おうかと思っています。 ・sleep関数があること ・pauseに相当する関数は標準ではないこと ・その代替案いくつか いろいろ勉強になりました。 ありがとうございました。