щас напишу, вообщем вот оно
my $query = new CGI;
my $CGI = new CGI;
my $forward = $CGI->param (\'forward\');
print $CGI->redirect("$forward");
#print $CGI->header();
#Если надо обновить базу внесенными изменениями
if ($CGI->param(\'ac\')=~\'savechange\')
{
   #опишем переменные
   my (@parametr, $param, $dbh,$counter);
   my (@id, $tmp, $counter, $name, $fieldname, $table, $type, $value, $sql, $idfield,$in_file,$bytesread,$buffer,$tmp_file,$updir);
   #получим все переданные параметры
   @parametr=$CGI->param();
   #найдем ключевое поле и его значение
   foreach $param (@parametr){
      ($tmp, $counter, $name, $fieldname)=split (/\\&/,$param,4);      
      if ($tmp=~/field/ and $name=~/CodeField/){
         $value=$CGI->param($param);
         ($tmp, $idfield, $type)=split (/\\&/,$fieldname);
         if ($type=~/s/){$value=~s/\\\'/\\"/g;$value="\'".$value."\'"};
         if ($id[$counter]){
            $id[$counter]=$id[$counter]." and $idfield = $value"
         }
         else{
            $id[$counter]="$idfield = $value";
         };
      }
   }
   #распарсим все поля
   foreach $param (@parametr){
      my $file=$param;
      ($tmp, $counter, $name, $fieldname)=split (/\\&/,$param,4);
      if ($tmp=~/field/ and $name!~/CodeField/){
         $value=$CGI->param($param);
         ($table, $fieldname, $type)=split (/\\&/,$fieldname);
         $value =~ s/ {2,}/ /g;
         print qq($value);
# Передаем два параметра. 
#    1 Путь к файлу на машине клиента принимаем из формы имя type 
#    2 Путь к файлайм на сервере, заносим в базу.
#    Примечание надо определять что это Описание или картинка. И от этого ставиьт путь на сервер.
# Сохранение файлов на сервере
      if ($fieldname=~/FileInfo/) {
         if ($value) {
            print (\'*\');
            print $value;
            print (\'*
\');
            my $DATA_DIR = \'\';   
            my $DEFAULT_UPLOAD_DIR = \'\';       
            my $MAX_SIZE_UPLOAD = 25; # Ko   
            my $FORM_URL = \'../upload.html\';
            my $WEBMASTER_EMAIL = \'Egiki@olviko.ru\';      
            my $DISPLAY_LANG = \'En\'; # Fr -> french
            if ($MAX_SIZE_UPLOAD) { $CGI::POST_MAX=12000 * $MAX_SIZE_UPLOAD; } # Ko   
            my $query = new CGI;   
#         Выделяем директорию куда сохранять
            my $typedir   = $query->param(\'forward\');
            my ($hlam);
               $_=$typedir;
               s/\\w://;
               s/([^\\/\\\\]+)$//;
               $_ = $1;
               s/\\.\\.+//g;
               s/\\s+//g;
               $typedir = $_;
               ($hlam , $typedir)=split (/\\?/,$typedir);
               ($typedir , $hlam)=split (/\\&/,$typedir);
               ($hlam , $typedir)=split (/\\=/,$typedir);
            print $typedir;
                my $dir = \'/home/uvd/html/upfile/\'.$typedir;
            print &Upload($query, $dir, $file);
         }
      }
#КОНЕЦ МОЕЕЕЕЕее
            if (!($value eq "")) {
            if ($type=~/s/){$value=~s/\\\'/\\"/g;$value="\'".$value."\'"};# Если пришли символы
            if ($value=~/\'\'/ and $type=~/s/){$value=\'NULL\'}; #Если пришло пусто.               
            #сформируем sql запрос   
            my $sql=qq(
            UPDATE $table SET $fieldname = $value
            WHERE $id[$counter]
            );
         #выполним запрос
#         print "$sql
";
            &SQLDo($sql);
            }
         }
   }
};
###########            Функция UPLOADв           #################
sub Upload  {
   my($query, $upload_dir, $file) = @_;
    my($file_query, $file_name, $size, $buff, $time, $bytes_count);
   $size = $bytes_count =0;
   $_ = $file_query = $query->param($file);
   s/\\w://;
   s/([^\\/\\\\]+)$//;
   $_ = $1;
   s/\\.\\.+//g;
   s/\\s+//g;
   $file_name = $_;
   if (!(-e "$upload_dir/$file_name")) {       
    open(FILE,">$upload_dir/$file_name") || &Error("Error opening file $file_name for writing, error $!", 1);
    binmode FILE;
    $time=time();
    while ($bytes_count = read($file_query,$buff,12000)) {
       $size += $bytes_count;
        print FILE $buff;
    }
    close(FILE);
   }
}
###########            КОНЕЦ Функции UPLOADв           #################
sub win2koi{
    my($result);
    $result=$_[0];
    $result =~ tr[ЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪюабцдефгхийклмнопярстужвьызшэщчъ][абвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ];
return $result;
}
Типа вот оно скрипт универсальный кто разбереться приник тому ))) но вот трабл при встрече значка № он данный конвертит в вин1251, причем проверял данный конверченный пришли уже скрипту тоесть кто то их уже конвертнуллл?



??