H.M.F.B AppleScript.



今回は趣向を変えて他のスクリプトの紹介だぃっ!
皆さん、、Perlってご存知ですか? ホームページの掲示板、カウンターなどを動かしているスクリプトなんで良く耳にすると思います、、。
で、今回は触りだけですが紹介したいと思いますね、、。


このMacPerlは、AppleScriptと同様単体では動作、コンパイル*1をさせる事が出来ません(と、思います、、笑)ので、はじめにMacPerlの本体をダウンロードしてインストールしてください。

The MacPerl Pages http://www.macperl.com/
D/Lファイル→ Mac_Perl_520r4_appl.bin (ファイルへ直リンク)

もし、上記直リンクで落とせない場合や不安な場合は下記から探してみてください。
(これらは上記[The MacPerl Pages]サイトから行く事が可能です)
ftp://sunsite.cnlab-switch.ch/software/platform/macos/perl/

*1 MacPerlは、実行形式で保存する必要があります、Windows版、UNIX版は、、ない、、というと嘘になりますが違います。




このMacPerlは英語版ですのでデフォルトで英語のフォント設定となっている為、結果Windowや、記述Window?のフォーマットをOsaka等幅などに変更しないと文字化けしてしまいますので下記の方法により文字化けを回避してくださいね、

やり方:化けているWindowをアクティブにして[Edit]Menu→[Format]よりOsaka等幅フォントを選ぶ。で文字化けは無くなります。

日本語版のMacJPerlというのも有るとの事ですが興味を持ちましたらご自身で調べてみてくださいね、。




さて、本題のPerlScriptの記述を紹介します(まだ難しいのは書けないのですがね、、笑)
内容はファイル(test1)を読み込んで、中身が入っていたら内容を表示、入っていなかったら「何もかいてないじゃん、」を出力します。
まず、、デスクトップ上に[test1]ファイルを作っておいてください。
そして、MacPerlのMenuよりNewファイルを開いて下記を記述してみてください。
000
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015






$textfile = "Macintosh HD:desktop Folder:test1";

open(FILE,"$textfile");  #AppleScriptでいうreadの処理ですね
@MyText = <FILE>;
close(FILE);

if(@MyText) {
 print "@MyText";
} else {
 print "何も書いてないじゃん、";
}
exit;

#このシャープはコメントタグ -- と同じで無視されます。


さて、書き終わりましたか? AppleScriptを書いてたら楽勝でもう意味もわかちゃった方もいると思いますが、、笑
そして、このMacPerlにもAppleScriptと同じような構文チェックと、実行があります。

構文チェック
ショートカットキー(Shift + 林檎 + Kキー)もしくはScriptMenuの上から4番目から実行出来ます
実行
ショートカットキー(Shift + 林檎 + Rキー) もしくはScriptMenuの上から2番目です。

まず、実行の前に構文チェックをして
エラーが無い場合は結果Window(「MacPerl」と書いてある)に「なんたらかんたら syntax OK」と表示されます、
ダメな場合はエラーと思われるline番号とエラーの表示がされますのでそれを参考にしながら修正してください、。 とにかくsyntax OKが出れば実行可能です。

上記スクリプトの実行結果は、test1ファイル内になんらかの記述があればその内容を、何も書かれていなければ「何も書いて無いじゃん、」を実行結果Windowに表示されます。
(何回も実行すると、結果Windowが汚くなるけど、deleteで消せるよ。)

000
001
002
003
004
005
006
007
008
009
010






set testfile to alias "Macintosh HD:Desktop Folder:test1"

set MyText to read testfile from 1 --何も書かれていない時の為from 1 必須

if MyText = "" then
  "何も書いて無いじゃん"
else
  MyText
end if


あ、、AppleScriptの方が2行くらい簡単でしたね、、笑。
これもPerlと同じく、何か書かれていたらその内容を、、書かれていなければ「何も書いて無いじゃん」を結果Windowに表示します。




今度は文字列を扱ってみますね、、見た目難しい?けどrepeat文なんかを理解した人には簡単ですので、、考えながらみてくださいね、、。
例では、「名前=JinJin,好物=アップル,趣味=昼寝」という文字列を$MyText変数へ代入して、からカンマで区切りさらにforeach(repeatと考えてOK)内でイコールで区切りprintで順に出力しています。(\nは、改行記号です、)

000
001
002
003
004
005
006
007
008
009
010






$MyText = "名前=JinJin,好物=アップル,趣味=昼寝";

@lines = split(',', $MyText);

foreach $i (@lines){
  ($name, $value) = split('=', $i);
  print "僕の$nameは、$valueです。\n";
}
exit;


書けましたか?上記のスクリプトの実行結果は、

僕の名前は、JinJinです。
僕の好物は、アップルです。
僕の趣味は、昼寝です。

となるのが正解です、以下簡単ですが、スクリプトの内容の説明をお読みください。

$MyText = "ほにゃらら";
$MyText変数に "ほにゃらら"; を代入します 変数の定義する式ですね set MyText to "ほにゃらら" と同じです。 ただしPerlでは、大文字小文字は別物ですまた変数の頭に数字をつける事は出来ません。

@lines
これも変数の仲間、配列変数(だったっけな?)と呼ばれるものです、中身は項目ごとに$lines[0]、$lines[1]、$lines[2]となっており、$lines[数]で項目を取り出す事が出来ます。

@lines = split(',', $MyText);
splitとは、直訳して「分割」上記の場合は、反対から読んで、、$MyTextをカンマで分割は、@linesになりますよー、と、いう意味です。
006行目では、($name, $value) = split..... ですね、この場合も反対から読んで分割したのは、$nameと$valueになります、、という意味です、とっても便利でしょ?

foreach $i (@lines) { ...... }
はい、foreach $i (@lines)は、、repeat と同じで、、@linesの中の配列($i)分ピリートします、もちろん、$iはループ変数ですから適当な名前でOKですよ、ここではiですけどね、。

print "変数混在のテキスト\n";
printは、出力です、何に、、?と言われても困りますがココでは結果Windowに出力する為にprintしています。ちなみに、\nは改行コードを文字で現した物です。改行したい時は\n,ちなみにタブは\tですよん

書くの忘れてましたが、、行の最後には必ず ; ←セミコロンをお忘れなく、、、。

000
001
002
003
004
005
006
007
008
009






$MyText = "名前=JinJin,好物=アップル,趣味=昼寝";

@lines = split(',', $MyText);
foreach $i (@lines){
  $i =~ s/\=/は、/g;
  print "僕の$iです。\n";
}
exit;


置き換えも簡単、、この結果は先ほどのと同じで、、
僕の名前は、JinJinです。
僕の好物は、アップルです。
僕の趣味は、昼寝です。
となります、、処理の内容はいたって簡単で、イコール記号を「は、」に置き換えただけなんですねー、、置換えは s/置き換えたい物/置き換えるもの/g; とこの一文でOKです、めちゃめちゃ簡単でしょ、、驚きですよね、、。 $i =~ s/\=/は、/g; ってだけで、$iに=が含まれていたら「は、」と置き換えちゃうんです、、(=の前に付いている\マークは、=を記号と認識させる為に使用しています他の記号類も、対象として扱う時は\を付けて記述してください。 例えば/←を「は」で置き換えたい時は s/\//は/g;となります。

さってと、、あんまりやると、、perlの腕前がばれてしまうので、、じゃなくって、AppleScriptと離れてしまうのでこの辺で終了しちゃいます、ね、、(え、中途半端だって?)そんな事いわないでー、、汗




実は今回Perlを題材にしたのは、、実はぼくPerlにはまっちゃいまして、、CGIスクリプトを今覚えている所です、、formデコードを作ろうと思ったら掲示板を作っちゃいました、、いやぁ、、Perl面白いですよ、、CGIってHTMLと組み合わせて作るんですけど、パズルみたいな面白さが有ります、というのもPerlで掲示板のように沢山の処理をさせるには、1つ1つをサブルーチンにまとめ呼び出して処理させて分岐して、、、。と、それはそれはパズルのたのしさです、、。ただ難点は自分で付けたサブルーチン名や、変数名を忘れてしまってね、、1日じゃ書けないから1日空けてからスクリプトをみると思い出せないところやら、、なにやらがあって、、笑。 たいへーんん、、、、。
そんでもって、AppleScriptの他にもこんな面白くて簡単なScriptがあるんだーって事で今回やっちゃったわけです、、笑。

AppleScriptの方も手を抜いている訳じゃないんだけどアプリケーション寄りだから、持っている人と持ってない人が入るから、、とか思っちゃって、、どうも絞り切れないんですが、、そんな事いってると更新も出来なくなっちゃうから次回は、、FileMakerか、、それとも番外編でファイルメーカーやらなにやらの内蔵されているスクリプト(マクロ?機能?)を触ろうかなぁ、、なんても考えていますが、、次回更新までお楽しみに、、、汗。 ←いつだ、、それ?



(c)HandyMacForBeginner's