配列の特定項目で並び替え

# 引数:(区切り文字, 列番号, 0->降順 1->昇順, 0->数値 1->文字, 元配列)
# 戻値:ソート済み配列
sub spSort{
    local($spritkey) = shift;
    local($field)    = shift;
    local($type)     = shift;
    local($patarn)   = shift;
    local(@in)       = @_;
    local(@tmp);
    @tmp = map {(split /$spritkey/)[$field]} @in;
    if($type && !$patarn)    {@in  = @in[sort {$tmp[$b] 
                                   <=> $tmp[$a]} 0 .. $#tmp];}
    elsif(!$type && !$patarn){@in  = @in[sort {$tmp[$a] 
                                   <=> $tmp[$b]} 0 .. $#tmp];}
    elsif($type && $patarn)  {@in  = @in[sort {$tmp[$b] 
                                   cmp $tmp[$a]} 0 .. $#tmp];}
    elsif(!$type && $patarn) {@in  = @in[sort {$tmp[$a] 
                                   cmp $tmp[$b]} 0 .. $#tmp];}
    return @in;
}