Показать сообщение отдельно
Непрочитано 11.10.2012, 19:25   #1
Аватар для MrShyr
Супергерой

Автор темы (Топик Стартер) Парсер DAT, Перловка

Доброго времени суток уважаемые,
Перепиливаю тут парсер, и столкнулся вот с такой бедой,
парсер должен по сути считывать в память 2 столбика из Русского файла,
сравнивать 1-ый столбик(id нпц) русского с 1-ым столбиком Английского,
и если данные ячеек совпадают, то должен записывать данные 2-ого
столбика во 2-ой столбик Английского файла. Но почему то на выходе
все равно получаю Англоязычный файл Прошу помощи, подскажите
быть может где то объебался ошибся

Основная часть кода:

PHP код:
if ($cfg->{'translate_raid'} == 1) {
    
my $file qq[IN\\raiddata-ru.txt];        # русский файл для чтения
    
my $HEAD = &get_header_as_hash($file);        # получаем хеш заголовка файла
    
open(FILE"<$file") || die qq[ErrorCan not read '$file'];
    
my $npc_id_raid_desc;
    while (<
FILE>) {
        
my @LINE = &get_line_as_array($_);
        foreach 
my $n (keys %{$HEAD}) {
                
substr($LINE[$HEAD->{$n}], 03)    =~ s/a,|u,//;        # удаляем в начале строки символы 'a,'|'u,'
                
substr($LINE[$HEAD->{$n}], -3)        =~ s/\\0//;        # удаляем в конце символы '\0'
        
}

#$id => $dec => 'raid_desc' = $_;
        
$npc_id_raid_desc->{$LINE[$HEAD->{'npc_id'}]}->{'raid_desc'} = $LINE[$HEAD->{'raid_desc'}];
    }
    
close(FILE);    # закрываем файл

    
$file qq[IN\\raiddata-e.txt];        # английский файл для чтения
    
$HEAD = &get_header_as_hash($file);        # получаем хеш заголовка файла
    
my @OUT;    # массив для обработанных данных и сохранения в файл
    
open(FILE"<$file") || die qq[ErrorCan not read '$file'];
    while (<
FILE>) {
        
my @LINE = &get_line_as_array($_);
        
my $id $LINE[$HEAD->{'npc_id'}]; # запишем npc_id в переменную $id
        
my $dec $LINE[$HEAD->{'raid_desc'}]; # запишем raid_desc в переменную $dec
        
if(exists($npc_id_raid_desc->{$id}->{$dec})) {
            
$LINE[$HEAD->{'raid_desc'}] = $npc_id_raid_desc->{$id}->{$dec}->{'raid_desc'};
        }

        
my $k 0;            # Вставляем нужное количество табуляторов
        
foreach my $LINE (@LINE) {
            
push(@OUT$LINE);
            
push(@OUT"\t") if ($#LINE > $k);
            
$k++;
        }
    }
    
close(FILE);    #закрываем файл

    # Сохраняем в файл.
    
&save_file(q[OUT\\raiddata-e.txt], @OUT);

За ранее очень благодарен

Добавлено через 18 минут
Мля, я бараш Всем спасибо, сделал сам

Добавлено через 18 минут
PHP код:
my @LINE = &get_line_as_array($_);
        
my $id $LINE[$HEAD->{'npc_id'}]; # запишем npc_id в переменную $id
        
if(exists($npc_id_raid_desc->{$id})) {
            
$LINE[$HEAD->{'raid_desc'}] = $npc_id_raid_desc->{$id}->{'raid_desc'}; 

Последний раз редактировалось MrShyr; 11.10.2012 в 19:44. Причина: Добавлено сообщение
MrShyr вне форума Отправить сообщение для MrShyr с помощью ICQ Ответить с цитированием