Perl のワンライナーをエイリアスに登録する時にクオート類をエスケープする方法。
シングルクオート(-e ‘…’)の中にさらにダブルクオート(print “…” など)がある時のエスケープ方法。
例えば、このサイトで紹介している、Perl の エンコーディング一覧を表示する方法は、直接実行するなら以下のようになる。
perl -MEncode -e ‘print join “\n”, Encode->encodings(“:all”),”\n”‘
これを、毎回打ち込むのは面倒くさいので、エイリアスに登録したい。
普通にやると、シングルクオートもダブルクオートも使ってしまっているので、エイリアス登録時にどちらもぶつかってエラーになってしまう。
エスケープしてもエラーになる
alias showperlenc ‘perl -MEncode -e \’print join “\n”, Encode->encodings(“:all”),”\n”\”
このような時は、Perl コード内部のクオートを qq{} (ダブルクオートの代わり) や q{} (シングルクオートの代り)に変更し、エイリアス指定用のクオートにダブルクオートを使う。
Perl のクオートを使わずに alias に登録する(cshの場合)
alias showperlenc “perl -MEncode -e ‘print join qq{\n}, Encode->encodings(q{:all}),qq{\n}'”