2018年11月4日日曜日

Pythonを突き詰めたらPerlを使ってた話

あ…ありのまま 今 起こった事を話すぜ!

「自作Pythonモジュールを使うスクリプトの性能を突き詰めていたと
思ったら いつのまにかPerlを使っていた」

な… 何を言っているのか わからねーと思うが
恐ろしいものの片鱗を 味わったぜ…

#!/usr/bin/perl -e$_=$ARGV[0];$ENV{'LD_PRELOAD'}=s|[^/]+$|hogehoge.so|r;exec('python',@ARGV)
import sys
import os
print sys.argv
print os.environ['LD_PRELOAD']

LD_PRELOADで、同じ場所にあるhogehoge.soをpython起動時に直接ぽく読み込みたかった(Cythonからpxdの設定だけで直で呼びたい関数があった)わけです。

shebangは、引数1個までで128バイト以下じゃないといけないのか。初めて知りました^^;。(Linuxだけか?) awkだと引数を再連結して全部拾い直すと128バイトに収まらない…無念。(引数なしなら可能)

#!/usr/bin/awk BEGIN{a=ARGV[1];sub(/[^/]+$/,"hogehoge.so",a);system("LD_PRELOAD="a"\tpython\t"ARGV[1])}

ワンライナー系の課題はPerlが強くてコンパクトなのですね…
私の技量の問題なのかな…