Perl

Perlのワンライナー(XMLの特定の要素を抽出、加工する。)

こんなXMLの内容の、「カテゴリ」の要素を引っこ抜きたい場合。 <lst name="facet_fields"> <lst name="カテゴリ"> <int name="カテゴリ1">70794</int> <int name="カテゴリ2">61133</int> <int name="カテゴリ3">51198</int> <int name="カテゴリ4">30447</int> <int name="カテゴリ5">26365</int> <int name="カテゴリ6">24425</int> <int name="カテゴリ7">16539</int> </lst></lst>

Perlでpsqlコマンドを実行して戻り値を取得する。

という簡単なスクリプトだったはずなのに ややこしいコマンドを叩いていたため非常にハマった。 $ echo "show work_mem" | psql -U user -h host_name dbname | sed '/^$/d' | sed 's/^ *\(.*\)/\1/g' なんていうコマンドの戻り値を取ろうとしていたんだけど…

Perlの文字列内に$があるときはエスケープしないとエラーになる。

こんな動きあったっけなー。 すっかり忘れてる。 ○ print "sed '/^\$/d'"; × print "sed '/^$/d'"; これはたまたま$と/が予約語でそれが隣接したからだと思うけど ちょっとめんどくさいね。