ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者: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";
> }
最新から表示回答順に表示良回答のみ表示