Perl のワンライナーを alias に登録する


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}'”