SCSH(Scheme Shell)スクリプト入門:Beginner's Guide(3/5 ページ)
Schemeプログラミング言語をベースとしたスクリプト言語「SCSH」。ニコニコ動画上で動作するLispインタプリタなども登場した今こそ、LispやSchemeに触れてみるいいチャンスなのかもしれない。
ファイルを日時に基づいてソートする
次に紹介する実用的な例は、最近更新されたファイルをソートして表示するためのスクリプトだ。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
最初の行はやはりシェバング行だ。2行目は、scshの実行ファイルに渡されるコマンドライン引数だ。
続く行では、日付/時刻オブジェクトを作成するための関数を定義しているのだが、SCSHがそれらを作成する通常のやり方に変わった特長があることを考慮している(月のパラメータは0から11までの範囲でなければならず、年のパラメータはその年から1900年を引いた値)。その次の2行では、以上/以下を比較する関数の別名としてolder-than?とnewer-than?を定義している。関数date-isは、ファイル名fのファイルの変更時刻をdate-isに与えられた日/月/年と比較する比較関数を使用した匿名関数を返す。このようにしておくと、sort-by-dateの呼び出しが読みやすくなるという利点がある。例えば「date-is newer-than 2 1 2008」はファイルの更新時刻が2008年1月2日よりも後の場合に真を返す関数を返すことになる。その次の行では、ファイル名の文字列のフィルタ/ソート済みのリストを返すsort-by-date関数を定義している。
次に、関数display-filename/dateを定義し、その後その関数を使ってソートされたファイル名を表示する。なお関数display-filename/dateでは、ファイル名と日付の表示の仕方を決めている。前記の場合は「日 月 年」の後にファイル名が表示される。
Copyright © 2010 OSDN Corporation, All Rights Reserved.