環境変数PATHやCLASSPATHの値をチェックする
sardineさんの日記(id:sardine:20060331)で、「パスのリスト」が含まれる任意の環境変数の値をチェックするツールをD言語で書いてらっしゃいます。
私はこれをPerlとRubyで書いてみました。ちょうどRubyのファイル関連を調べていたので、良いお題かと思い、参考にさせていただきました。どちらもone-linerでなるべく短く書いてみました。例は環境変数PATHの値をチェックします。(見栄えのため改行してます。)
$ perl -e 'for(split(/:/,$ENV{shift()})){ print((-e)?((-d)?"d":"f"):"!");print" $_\n"}' PATH
ちなみにDOS窓で実行するときは、'と"を交換する必要がある。それと、パスセパレータのことを考えると、こんな感じ。
perl -e "$s=($^O eq 'MSWin32')?';':':';for(split(/$s/,$ENV{shift()})){ print((-e)?((-d)?'d':'f'):'!');print qq| $_\n|}" PATH
Rubyのone-liner。
ruby -e 'ENV[ARGV.shift()].split(File::PATH_SEPARATOR).each{
p | puts((test(?e,p)?File.stat(p).ftype[0,1]:"!")+" "+p)}' PATH |
a = ARGV.shift() e = ENV[a] e.split(File::PATH_SEPARATOR).each do |p| if File.exists?(p) m = File.stat(p).ftype[0,1] else m = "!" end puts m + " " + p end