モバイル向け Adsense を Perl で使うにはバッククォートが便利

  • 投稿日:
  • by
  • カテゴリ:

モバイル向け Adsense が開始になり、一部で話題になっているようですね。

MT4i に関しても「対応可能か」といくつかご質問を受けました。「金儲けしたいならご自分で何とかしてください」と言いたいのが正直なところですが、私自身が使ってみたいので、トライしてみました。

しかしそれにしてもこのモバイル向け Adsense にて提供されるスクリプトは、不親切極まりないと言うかなんと言うか、ある程度プログラミングの知識がないとどうにもできない代物ですね。最後に print 文で結果を出力している為、汎用性がまったくありません。しかも Adsense 用広告コードの変更は禁止されているときた。コメント欄で 2.x への適用例を報告してくれた方がいましたが(ありがとうございます)、HTML::Template を利用している 3.0 には同じ手段が適用できません。

で、色々と悩んで調べた結果、標準出力を変数に格納する方法として、バッククォートが使えることが分かりました。過去に何度か、Perl からシェルスクリプトを実行する手段としてバッククォートを使ったことがあるんですが、そういう認識で使ってはいなかった為、目から鱗でした。良く良く考えてみればその通りなんですけれども。

で、以下が Perl にてバッククォートを用い、モバイル向け Adsense のスクリプトが吐く結果を変数に格納する方法。分かってしまえばどうってことはないです。

  1. モバイル向け Adsense のスクリプトを、任意のファイル名で保存。ここでは、"Adsense.pl" とします。
  2. バッククォートを使って上記スクリプトを実行、結果を変数に格納します。
    例: my $adsense = `perl Adsense.pl`;
  3. 後は任意の方法で出力するだけ。

これで Adsense から提供されるスクリプトをまったく変更せず、比較的自由に広告を埋め込むことができます。

MT4i では、開発中の 3.0β3 にて対応する予定で、既に実装は済んでいます。近日中に公開できるかと。

<追記>
会社の同僚に教えて貰ったんですが、バッククォートより qx// の方がいいんじゃね?とのこと。理由は「だってバッククォートってどこにあるか良く分かんなくてタイプできないじゃん」と。確かに。どちらも意味は一緒なので、上記2番のコードは以下のように書き換えることができます。

例: my $adsense = qx/perl adsense.pl/;