bash で perl を -e オプションで実行しています。 [ # perl -e ’’ ] perl文内でシングルクオートを使いたいのですが、Bashが先に解釈してしまいエラーになります。 [ #perl -e ’m/’/;’ ] ”¥”ではエスケープできませんでした。 [ #perl -e ’m/¥’/;’ ] ”$”で変数がbashに展開されてしまうのでperl文を囲むクオートはダブルクオートにしたくありません。 [ # perl -e ”m/’/;print ¥$a” ] うまく、perlにシングルクオートを渡す方法が知りたいです。またはperl内でシングルクオートを現す代替変数はありますか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2003/11/08 14:06:09
  • 終了:--

回答(4件)

id:asakura-t No.1

浅倉卓司回答回数151ベストアンサー獲得回数22003/11/08 15:09:37

Perlは

q/文字列/

とすればシングルクオートの代わりになります。

なので、

perl -e ’print q/文字列/;’

とかで大丈夫ではないかと。

id:kiichigo

いえ、q// や、qq// , m//, s// は良く使っています。

# perl -e ’print q/’/;’

これでは、Bashが二つ目のシングルクオートを認識してしまい、三つ目のシングルクオートが閉じられていないと解釈されてしまいます。

2003/11/08 15:25:04
id:sasada No.2

sasada回答回数1482ベストアンサー獲得回数1332003/11/08 15:53:53

http://www.hatena.ne.jp/list

人力検索はてな - 質問一覧

 URLはダミーです。

>perl -e ’print q/’/;’

をやるとすれば、

 perl -e ’m/(?{chr(0x27)})/;’

くらいですかね。

id:kiichigo

そうですか。なにかBash側でもいいので、エレガントに書けるように用意されている機能とかないですかね

2003/11/08 16:31:45
id:sasada No.3

sasada回答回数1482ベストアンサー獲得回数1332003/11/08 16:01:42

ポイント150pt

http://www.hatena.ne.jp/list?

人力検索はてな - 質問一覧

 URLはダミーです。

 ごめんなさい、typoしました。

訂正

 誤: (?{chr(0x27)})

 正: (??{chr(0x27)})

 失礼しました。

 10ptお返ししておきます。。。

id:kiichigo

あれ?いけてましたよ。

$ echo ”aaa’aaa” | perl -ne ’print ”ok” if m/(?{chr(0x27)})/’

ok

$ echo ”aaa’aaa” | perl -ne ’print ”ok” if m/(??{chr(0x27)})/’

ok

2003/11/08 16:37:57
id:asakura-t No.4

浅倉卓司回答回数151ベストアンサー獲得回数22003/11/08 19:00:13

ポイント100pt

 あ、失礼しました。

 bashだと駄目なようですね……。

 単純に適当な変数に代入するのが楽では?

echo ”aaa’aaa”|perl -e ’$a=”¥x27”;print ”ok” if <> =~ m/$a/;’

#ちなみに、sasadaさんの言うように??でないと問題あるとおもいます。

id:kiichigo

そうですね。変数にいれておくので十分かと思えてきました。

??{}はsasadaさんに詳しく教えてもいただきました。

どうもありがとうございます。

2003/11/12 14:25:06

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません