Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Курилка / Yak floor (https://forum.zone-game.info/forumdisplay.php?f=16)
-   -   Парсер DAT, Перловка (https://forum.zone-game.info/showthread.php?t=23562)

MrShyr 11.10.2012 19:25

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

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

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 минут
Мля, я бараш :D Всем спасибо, сделал сам :D

Добавлено через 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'}; 



Текущее время: 19:21. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot