質問 |
||
| 質問者:xsperl | perlでコマンドライン文字列受付を終了する方法 | |
|---|---|---|
困り度:
|
下のように何もオプションをつけないでPerlを起動します。すると、文字が打ち込めるようになるので打ち込んでみました。 さて、この状態からどうやってスクリプトを実行して元のプロンプトに戻ればいいのでしょう? とりあえず、Ctrl+Z を押した後 ENTER を押すと終了になるようです。シェル上でのPerlのスクリプト編集状態から抜ける方法がわからないです。 よろしくお願いします。 C:\>perl print "aaaaaaaaaa\n"; ^Z aaaaaaaaaa |
|
質問投稿日時:08/03/16 07:18 質問番号:3866965 |
||
回答良回答10pt |
|
| 回答者:tamahiro22 | CTRL+D でも同じように編集を終えられると思う。 素直に、__END__ を打ち込むのが、流儀なのかも。 |
|---|---|
| 種類:回答 どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/03/16 13:54 回答番号:No.4 |
|
| この回答へのお礼 | __END__ で終わりますね。知りませんでした。ありがとうございます。 |
回答 |
|
| 回答者:ashida1981 | 自分も perl を、勉強し始めたばかりです。 スクリプトを実行するには、 perl -e など、 オプションが必要です。 詳しくはググってください。 ( perl コマンドライン など。) まとはずれなら、ごめんなさい。 |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/03/16 13:08 回答番号:No.3 |
|
| 参考URL: | http://www.geocities.co.jp/SiliconValley-Sunnyvale/6128/perl/onelin..., http://www.rfs.jp/sb/perl/02/12.html |
| この回答へのお礼 | ありがとうございます。 コマンドラインで 一行で書く方法参考になりました。 |
回答 |
|
| 回答者:auty | コマンドプロンプトでは、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:\> |
|---|---|
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| |
回答日時:08/03/16 13:07 回答番号:No.2 |
|
| この回答へのお礼 | 大変参考になりました。詳しく教えていただきありがとうございました。 |
回答良回答20pt |
|
| 回答者:osamuy | Perlは標準入力を待ち受けてるだけなので、お使いのシェルの流儀に則って、リダイレクトやパイプラインを記述すれば良いかと。 例えばcmd.exeだと、こんな感じ: echo die "OK" |perl 詳しくは、お使いのシェルのmanやらhelpをご覧下さい。 |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/03/16 11:14 回答番号:No.1 |
|
| この回答への補足 | すみません、質問者です。 下のお礼に複雑なことを書いてしまいましたが、 bash では、 $ perl <<END > print "aaaaaaaaa\n"; > END でできました。 |
| この回答へのお礼 | なるほど、標準入力でしたか。 大変参考になりました。 ありがとうございます。 スクリプトをファイルに書かないで さっと実行する方法を考えていましたが、 この方法は記述が複雑になるため、 ファイルに書いたほうが簡潔にすみそうです。 やってみました。 --- 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"; > } |