![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
Perlをインストールして勉強し始めて数十分のものです
(まだ一時間経っていません)。いま、超簡単なサンプルで勉強中です。
環境はWinにActivePerlをインストールして、
コマンドプロンプトを立ち上げ「Perl ファイル名」とし実行しています。
これをファイルのダブルクリックで実行できるようにしたいと思っています。
というか実際には実行だけはできるのですが、一瞬で終わってしまい
結果の確認が出来ません。これを処理待ちさせて確認できるように
したいのですが、その方法が分かりません。
DOSバッチのpauseとかに相当するものです。
今は分からないので、無限ループで代用していますがショボすぎます。
…と書いているうちに標準入力待ちをするコマンドが分かったので
それを使うようにしました。少しはましになりましたが、
より正統な方法を知りたいです。
あと、一定時間待つコマンドもあとで使うようになるかも
しれないのでこれもあわせて教えてください。
・普通の処理待ちコマンド
・一定時間待つコマンド
これを教えてください。よろしくお願いします。
$xx = 7;
print "答は$xxです\n";
print '答は$xxです\n';
print "\n\n";
print "何か押してください";
$aa = <STDIN>;
No.2ベストアンサー
- 回答日時:
秒単位のウェイトならsleep関数でいけますが、ミリ秒以下のウェイトは、
mibusysさんが調べられた方法を取るの一般的だと思います。
ご質問のPerlでのpauseに相当する関数ですが、標準ではないと思います。
CPANで探せばあるとは思いますが、そこまでする必然性があるかというところですね。
例えば、CPANにあるTerm::ReadKeyを用いて、
use Term::ReadKey;
ReadMode 'cbreak';
print '処理が終わりました。任意のキーを押してください。';
ReadKey(0);
とすれば、pauseに相当する動作が得られるかもしれません。
(未検証です)
結局、質問欄に書かれている<STDIN>の方法が一番手軽かもしれません。
私もまだPerlの中級の域にも達していないので、熟練者さんの回答をもう少し待たれて
みてください。
>秒単位のウェイトならsleep関数でいけますが
おぉ。普通にsleepというものもあるのですね。
ありがとうございます。
>ご質問のPerlでのpauseに相当する関数ですが、標準ではないと思います。
無いのですか…。これは大変助けになりました。
あるかないかわからない状態で探し続けるのは大変ですので。
>例えば、CPANにあるTerm::ReadKeyを用いて、
>とすれば、pauseに相当する動作が得られるかもしれません。
これやってみました。大体動きました。
スペースバーや通常の文字を入力すると一発で終了します。
しかしEnterキーの場合、なぜか4回押下しないと終了しません。
「<STDIN>」は記述はシンプルですが、対応キーが少ないので
ReadKey(0);のほうを今後使おうかと思っています。
・sleep関数があること
・pauseに相当する関数は標準ではないこと
・その代替案いくつか
いろいろ勉強になりました。
ありがとうございました。
No.3
- 回答日時:
CPANから取ってこなくてもTerm::ReadKeyは標準で入ってますね。
No.2のコードを試したところ、自分の環境では、リターンキーは反応ありませんでしたが、
その他のキーはきちんと応答していました。
No.1
- 回答日時:
まずは、myperl.batというバッチファイルを作ってください。
このファイルの置き場所はどこでもいいです。
中身は以下です。
-- myperl.bat -----------------
@echo off
perl %*
pause
-------------------------------
次にエクスローラーを立ち上げてください。
(Win+Eで立ち上がります。
WinキーはCtrlキーとAltキーの近くにあるWindowsロゴのキーです。)
エクスプローラーのメニューバーから、ツール → フォルダ オプションを選び、
”ファイルの種類”タブをクリックしてください。
拡張子が”PL”を探し、それを選択してから、[変更]ボタンをクリック。
(拡張子”PL”がなければ、[新規]ボタンをクリックして作成)
次に、[参照]ボタンをクリックし、先ほど作成した”myperl.bat”を選ぶ。
[OK]ボタンをクリックして設定完了。
この回答への補足
もともとの質問は、「他言語のpauseに相当するPerlのコマンドは何か」
という趣旨でした。今回のご回答から判断するに、
「Perlには処理待ちをするコマンドは存在しない」ということなのでしょうか?
この点を明確にしていただきたいです。
よろしくお願いします。
なるほど。面白い代替案ですね。
ありがとうございました。
あれから自分でも少し調べたのですが
他言語のsleepに該当するコマンドとしては
「Time::HiResモジュール」なるものを使用し
「usleep (マイクロ秒)」と書くか、
「select(undef, undef, undef, 秒数);」
と書くかのどちらかがよく使われるようですね。
ニーズが高いことが分かってるんだったら
コマンド作ればいいのにと思ってしまいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- オープンソース コマンドプロンプトのコードの実行方法を教えて欲しい 2 2022/11/26 20:45
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- CAD・DTP Autocad Scriptファイルからの入力とコマンドラインからの入力が違う 1 2023/08/01 09:13
- その他(プログラミング・Web制作) DOSコマンドに詳しい方、お知恵をお貸しください 5 2022/11/04 20:55
- Windows 10 ネットワークプリンターにファイルを直接送る方法・コマンドないですか?(´・ω・`) 3 2023/03/13 23:15
- IT・エンジニアリング インフラエンジニア(ネットワークエンジニア)の検証業務について教えてください。 インフラ初心者なので 2 2022/06/26 00:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlの処理待ちコマンド
-
標準モジュールを削除したい。(...
-
Excel VBAでリンク切れをチェッ...
-
'Range'メソッドは失敗しました
-
Sub Workbook_Open()でユーザー...
-
LCD ディスプレイを Raspberry ...
-
VBでグローバル変数を宣言するには
-
モジュールの最大数はいくつな...
-
Friend は標準モジュールじゃ宣...
-
マクロで「モジュールの開放」...
-
別シートに罫線がひけない
-
現在アクティブなフォーム名を...
-
モジュール関連図・モジュール...
-
モジュールとは何ですか
-
複数のフォーム間での変数宣言
-
SWI-Prologでのエラーに関して
-
本当にPublicな変数(配列で)
-
Postfixでメールを受信したらPe...
-
モジュールからフォームのボタ...
-
Excelで時刻になったら知らせて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
open MAILでの"|"
-
AIX6でファイルのタイムスタン...
-
Perlの処理待ちコマンド
-
LinuxにおいてのPerlのプログラ...
-
Active Directoryでグループに...
-
Perlでexitコードを取得する方法
-
実行中のcpan processを終了さ...
-
時間がかかり過ぎたプロセスを...
-
`ls`標準出力はどこにいった?
-
マルチスレッドとマルチプロセ...
-
HELOコマンドが失敗する。
-
Parallel::ForkManagerについて
-
system関数とqx演算子の違いに...
-
Perlで日本語から始まり記号で...
-
flockの挙動がおかしい。。。
-
perl から unix コマンドを入...
-
my $pid = open PIPE, "-|";の...
-
標準入出力先の検知
-
Perl はOSによって動作が違った...
-
macでperl perldocについての...
おすすめ情報