Illustrator CS4でのfile pathの取得&perlで索引の連続ノンブルをまとめる
1 Illustrator CS4でのfile pathの取得結果が,OSのバージョンによって変わる
2 その後,Mac OSX 10.7 & Illustrator CS4での動作も求められる
3 動かしてみると,予期せぬ箇所でエラーが発生している
4 調査の結果,下記の事実が判明する
スクリプトエディタのログのキャプチャを掲載します.
2 索引の連続ノンブルをまとめる perl ver.
#———————————————-
#ノンブルの配列中の連続した部分をハイフンで連結した文字列にして返す
#(「1,2,3,4,5,8,9,10」の配列を「1-3,4,5,8-10」にする)
#———————————————-
sub GetSuccess {
my @in = @_;
my @arr;
#配列の要素が2つだけならカンマで連結して返す
my $len = @in;
if ($len == 2) {
return join(",", @in);
}
#3つ以上の場合
my @result;
my @serial;
my $prev;
for(my $i = 0; $i < @in; $i++) {
my $num = $in[$i];
#最初の要素はリストに入れるだけ
if ($i == 0) {
$prev = $num;
push (@serial, $prev);
next;
}
#ノンブルが続いている箇所を固まりにして配列に入れる
if ($num – 1 == $prev) { #続き要素なら
push (@serial, $num); #続き要素用の配列に入れる
} else { #ノンブルが飛んだら
push (@result, [@serial]); #続き要素の配列をリファレンスにして結果配列に入れる
@serial = (); #続き要素用の配列をリセット
push (@serial, $num);
}
$prev = $num; #直前の番号を更新
}
push (@result, [@serial]);
#結果配列の内容を走査
my @retArr;
foreach my $r(@result) {
my @r = @$r;
my $cnt = @r;
my $val;
if ($cnt >= 3) { #3以上の配列なら最初と最後をハイフンで連結
$val = join("-", $r[0], $r[-1]);
} else { #2以下ならカンマで連結
$val = join(",", @r);
}
push (@retArr, $val);
}
# print join(",", @retArr), "\n";
return join(",", @retArr);
}
[/perl]
Perl Script 習作
Perlのブラッシュアップのためにサブルーチン化した習作を投下します。元はInDesignから書き出したxmlテキストをタブ区切りテキストに成形するスクリプトの一部。内容は順不同に出現するフィールド名のタグで挟まれた部分を抽出して並び替えて揃えるというものです。↓こんな感じのタブ区切りテキストを表組に使えるテキストに加工するのに作りました。
↓
ちょっと記述が長いかもしれないので、折りたたんでおきます。
(シンタックスハイライトを使って整形しました。2012/2/19)
記事投稿日
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
« 9月 | ||||||
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |