perl -e 'print "Hello world!!\n";'を成功させるには?
[上に]
[前に]
[次に]
経験0時間者
1999/12/01(水) 11:12:24
ほんとにつまらない質問なんですが、Perl入門の引数指定のところにかいてあった、コマンドプロンプト
から perl -e 'print "Hello world!!\n";'というのを打ってみたんですが、次のようなエラーメッセージが
表示されました。
Can't find string terminator "'"anywhere before EOF at -e line 1
これはどういう意味で、何故このようなメッセージが出てしまうのでしょうか。。。
本当につまらない質問ですいません。
いそぎんちゃく
1999/12/01(水) 11:29:21
Can't find string terminator "'"anywhere before EOF at -e line 1
は、
「'」が見つかりませんよ
という意味です。つまり、最初の「'」だけあって、最後の「'」がないよ と言っています。
でも、最後の「'」はあるのに??と思うでしょう。
それは、こういうわけがあります。
文の中に「!!」を使っていますが、これは「直前のコマンドを再投入」という意味になってしまいます。というわけで、その部分が直前のコマンドに置きかえられ、しかもその後ろの「\n";'」は無視されてしまうので、該当のようなエラーが出てしまうわけです。
試しに
perl -e 'print "Hello world\n";'
とやればOKになりました。
いそぎんちゃく
1999/12/01(水) 11:34:20
というわけで、どうしても「Hello World!!」
と出力したいのなら
perl -e 'print "Hello world\!\!\n";'
とやりましょう。
hiro-kim
1999/12/01(水) 15:14:17
>これはどういう意味で
と問われたら,terminator なり EOF なりを英和辞書で調べてみてください,と答えるかなあ。
プログラム言語に関わっていく上で,いつでも付きまとう英単語ですから。
B-Cus
1999/12/01(水) 15:19:02
補足しておきますが、!! 置換はシェルの機能であって、
perl とは *何の関係もありません*。
sh・bash だと '' の中のヒストリ置換は行なわないよね。
csh・tcsh のヤなところ。
ところで、DOS プロンプトでも !! ってあるんですか?
オイラリー
1999/12/01(水) 15:29:54
>Can't find string terminator "'"anywhere before EOF at -e line 1
>これはどういう意味で、何故このようなメッセージが出てしまうのでしょうか。。。
エラーメッセージの和訳が、ラクダ本の9章に載ってますよ(^。^)
いそぎんちゃく
1999/12/01(水) 15:30:42
>ところで、DOS プロンプトでも !! ってあるんですか?
ワタシは、社内サーバをTelnetでつないで実験しました。
たしかに、DOSプロンプトだと !! って、ただのエラーですね。
ふじ
1999/12/01(水) 16:09:22
DOS プロンプトだと、引数を '' で括ることができません。
なので、
>perl -e 'print "Hello world!!\n";'
perl -e "print \"Hello world!!\n\";"
こうしないとダメなんです。
[上に]
[前に]
[次に]