- ベストアンサー
perlでコマンドライン文字列受付を終了する方法
下のように何もオプションをつけないでPerlを起動します。すると、文字が打ち込めるようになるので打ち込んでみました。 さて、この状態からどうやってスクリプトを実行して元のプロンプトに戻ればいいのでしょう? とりあえず、Ctrl+Z を押した後 ENTER を押すと終了になるようです。シェル上でのPerlのスクリプト編集状態から抜ける方法がわからないです。 よろしくお願いします。 C:\>perl print "aaaaaaaaaa\n"; ^Z aaaaaaaaaa
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Perlは標準入力を待ち受けてるだけなので、お使いのシェルの流儀に則って、リダイレクトやパイプラインを記述すれば良いかと。 例えばcmd.exeだと、こんな感じ: echo die "OK" |perl 詳しくは、お使いのシェルのmanやらhelpをご覧下さい。
その他の回答 (3)
- tamahiro22
- ベストアンサー率44% (8/18)
CTRL+D でも同じように編集を終えられると思う。 素直に、__END__ を打ち込むのが、流儀なのかも。
お礼
__END__ で終わりますね。知りませんでした。ありがとうございます。
- ashida1981
- ベストアンサー率0% (0/1)
自分も perl を、勉強し始めたばかりです。 スクリプトを実行するには、 perl -e など、 オプションが必要です。 詳しくはググってください。 ( perl コマンドライン など。) まとはずれなら、ごめんなさい。
お礼
ありがとうございます。 コマンドラインで 一行で書く方法参考になりました。
- auty
- ベストアンサー率58% (284/486)
コマンドプロンプトでは、MS=DOSのとき以来ファイルの終了は、1Ahでした。 コンソールで、1Ahを入力するのに、Ctrl+Zを使います。それで >>> Ctrl+Z を押した後 ENTER を押すと終了になるようです。 これで、シェル上でのPerlのスクリプト編集状態から抜けることが出来ます。 話は変わりますが、copy コマンドで コンソール(con)からの入力を ファイル(tt.txt)に落とす 場合は次のようになります。 ---------------------------------------------------------------------------------- C:\>copy con tt.txt aaa bbb ^Z 1 個のファイルをコピーしました。 C:\>type tt.txt aaa bbb C:\>
お礼
大変参考になりました。詳しく教えていただきありがとうございました。
お礼
なるほど、標準入力でしたか。 大変参考になりました。 ありがとうございます。 スクリプトをファイルに書かないで さっと実行する方法を考えていましたが、 この方法は記述が複雑になるため、 ファイルに書いたほうが簡潔にすみそうです。 やってみました。 --- dos --- C:\>echo ^ More? foreach my $file (glob('.\*')) {^ More? print $file. "\n";^ More? } | perl --- bash --- $ cat <<END >&1 | perl > foreach my \$file (glob('./*')) { > print \$file. "\n"; > }
補足
すみません、質問者です。 下のお礼に複雑なことを書いてしまいましたが、 bash では、 $ perl <<END > print "aaaaaaaaa\n"; > END でできました。