置換する文字列にシングルクオートとドル記号があったため手こずりました:
どういう置換をしたいか?
置換前の文字列:
['align' => $hoge]
置換後の文字列:
['align' => $foo]
僕が書いた正規表現(間違い)
perl -pi -e 's/\[\'align\' => \$hoge\]/\[\'align\' => \$foo\]/' *
動くが(美しくない)正規表現
perl -pi -e 's/\['\''align'\'' => \$hoge\]/\['\''align'\'' => \$foo\]/' *
シングルクオートをエスケープする際、\'
としていてはダメで'\''
とする必要がありました。
シェルがシングルクォートを解釈してしまうのですね。
実験
echo ''\''align'\''' # 'align'と出力される echo '\'align\'' # コマンドが実行されない