• ベストアンサー

perlでコマンドライン文字列受付を終了する方法

下のように何もオプションをつけないでPerlを起動します。すると、文字が打ち込めるようになるので打ち込んでみました。 さて、この状態からどうやってスクリプトを実行して元のプロンプトに戻ればいいのでしょう? とりあえず、Ctrl+Z を押した後 ENTER を押すと終了になるようです。シェル上でのPerlのスクリプト編集状態から抜ける方法がわからないです。 よろしくお願いします。 C:\>perl print "aaaaaaaaaa\n"; ^Z aaaaaaaaaa

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

Perlは標準入力を待ち受けてるだけなので、お使いのシェルの流儀に則って、リダイレクトやパイプラインを記述すれば良いかと。 例えばcmd.exeだと、こんな感じ: echo die "OK" |perl 詳しくは、お使いのシェルのmanやらhelpをご覧下さい。

xsperl
質問者

お礼

なるほど、標準入力でしたか。 大変参考になりました。 ありがとうございます。 スクリプトをファイルに書かないで さっと実行する方法を考えていましたが、 この方法は記述が複雑になるため、 ファイルに書いたほうが簡潔にすみそうです。 やってみました。 --- 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"; > }

xsperl
質問者

補足

すみません、質問者です。 下のお礼に複雑なことを書いてしまいましたが、 bash では、 $ perl <<END > print "aaaaaaaaa\n"; > END でできました。

その他の回答 (3)

回答No.4

CTRL+D でも同じように編集を終えられると思う。 素直に、__END__ を打ち込むのが、流儀なのかも。

xsperl
質問者

お礼

__END__ で終わりますね。知りませんでした。ありがとうございます。

回答No.3

 自分も perl を、勉強し始めたばかりです。    スクリプトを実行するには、 perl -e など、  オプションが必要です。  詳しくはググってください。 ( perl コマンドライン など。)    まとはずれなら、ごめんなさい。  

参考URL:
http://www.geocities.co.jp/SiliconValley-Sunnyvale/6128/perl/oneline.html,http://www.rfs.jp/sb/perl/02/12.html
xsperl
質問者

お礼

ありがとうございます。 コマンドラインで 一行で書く方法参考になりました。

  • auty
  • ベストアンサー率58% (284/486)
回答No.2

コマンドプロンプトでは、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:\>

xsperl
質問者

お礼

大変参考になりました。詳しく教えていただきありがとうございました。

関連するQ&A