人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: kiichigo
●カテゴリ:コンピュータ
✍キーワード:bash Perl print エスケープ エラー
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● 浅倉卓司
●0ポイント

http://search.cpan.org/~nwclark/perl-5.8.2/pod/perlfunc.pod

perlfunc - search.cpan.org

Perlは

q/文字列/

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

なので、

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

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

◎質問者からの返答

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

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

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


2 ● sasada
●0ポイント

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

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

URLはダミーです。

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

をやるとすれば、

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

くらいですかね。

◎質問者からの返答

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


3 ● sasada
●150ポイント

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

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

URLはダミーです。

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

訂正

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

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

失礼しました。

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

◎質問者からの返答

あれ?いけてましたよ。

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

ok

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

ok


4 ● 浅倉卓司
●100ポイント

http://www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html

Manpage of BASH

あ、失礼しました。

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

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

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

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

◎質問者からの返答

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ