おはこんばんちわ。お久しぶりでございます。今回は自分が使う時にいつも忘れててスポットライトで強引に検索しているソースを少々。
何をやるかと言えば、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 さん、ご協力ありがとうございます