わたなべです。 TAKAHASHI Masayoshi <maki / rubycolor.org> writes: :例えばPerlなひとには、「やっぱり正規表現ってオブジェクトだよね」 :とか言って、 : : UNAME_PAT = {"BSD" => /(Free|Net|Open)BSD/i, "Linux" => /Linux/i} : : def machinename(uname) : UNAME_PAT.each{|name, pattern| : if pattern =~ uname : return name : end : } : nil : end : : machinename("freebsd") #=> "BSD" : :みたいな、正規表現を値にしたハッシュを使ってみせるとか。 perl5.005以上ならqr//があるので、 %UNAME_PAT = ("BSD" => qr/(Free|Net|Open)BSD/i, "Linux" => qr/Linux/i); sub machinename { my $uname = shift; while (my ($name, $pattern) = each %UNAME_PAT) { if ($uname =~ $pattern) { keys %UNAME_PAT; return $name; } } undef; } machinename("freebsd"); #=> "BSD" と逆襲を喰らいます。 -- わたなべひろふみ