LoginSignup
5

More than 5 years have passed since last update.

AppleScript から Perl のワンライナーをしばく

Last updated at Posted at 2014-11-10

 おはこんばんちわ。お久しぶりでございます。今回は自分が使う時にいつも忘れててスポットライトで強引に検索しているソースを少々。

 何をやるかと言えば、AppleScript の do shell script を使って Perl のワンライナーを動かそうというものです。

 まあ何に使うかと言えば、ちょっとしたテキスト処理で「あー、正規表現使いたいなぁ」というその場しのぎ感満載な欲求を満たす為であります。さあそれではレッツゴー。

 ソースを見てもらえればわかりますが、特に何も難しいことはしておりません。ポイントはワンライナーと AppleScript との間で文字化けせずにどうやってテキストをやりとりするか、といった程度です。

Applescript
set sampleString to "明日天気になーれ" as «class utf8»
set regex to "s/明日/明後日/g" as «class utf8»
display alert regReplace(sampleString, regex)

on regReplace(myString, myRegex)
    try
        set result to do shell script ¬
            "perl  -Mutf8  -e 'binmode STDOUT, 'utf8';utf8::decode($ARGV[0]);$ARGV[0] =~" & ¬
            myRegex & ";print $ARGV[0]', " & quoted form of myString as «class utf8»
        return result
    on error errMsg number errNum
        display alert (errMsg & return & errNum)
    end try
end regReplace

 うーん、このソース作ったのは 10.4 時代なのでおそらく今時の AppleScript だともうちょっと違った書き方になっているかもしれません。とりあえず手元の 10.6.8 では動いているので良しとします。

※追記:動作確認報告をいただきました。10.7 10.9 ともに動作OKとのこと
@monokano さん、@MD5500 さん、ご協力ありがとうございます

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5