AppleScriptからmdlsの出力を使いたかったので。
#!/usr/bin/perl while(<>){ chomp; s/ +/ /g; if( (1..1) ){ s/^kMD/{kMD/; }else{ s/^kMD/,kMD/; } if ( /=/ ){ s/=/:/; s/(\d+-\d+-\d+ \d\d+:\d\d:\d\d [+-]\d\d\d\d)/date "\1"/; }else{ s/^ ([^",]+)(,?)/ "\1"\2/; s/("\d+-\d+-\d+ \d\d+:\d\d:\d\d [+-]\d\d\d\d")/date \1/; } s/\($/{/; s/^\)$/}/; print; } print "}";
AppleScriptからはこんな感じで。
on run tell application "Finder" set s to selection if (class of s) is list then my mdls(item 1 of s) else my mdls(s) end if end tell end run on mdls(f) run script (do shell script "mdls " & quoted form of POSIX path of (f as alias) & "|/usr/local/bin/mdInfo") end mdls
perlの方、Safariで書いてるとバックスラッシュにならないのは仕様なんだっけか*1。
AppleScriptのmdlsハンドラは、mdlsの出力をAppleScriptのレコードとして返すようになっている。はず。たぶん大丈夫だ。
久々にperl書いたので色々悩んだが、まぁ出来たから良しとするか。
*1:そのままTerminalにペーストすると化けるので、コピペする時は一回TextEditなどにペーストしてコピーし直すべし。