Perl - porównywanie wartości z dwóch plików

Witam,

jestem baardzo początkujący w perlu, a mam następujące zadanie.

Są dwa pliki - jeden, to lista numerów i nazw oddzielona tabami, po jednym takim zestawie w linii. Drugi, to pewien log w postaci XML’a, który zawiera w jednej z gałęzi numer (znajdujący się w pierwszej kolumnie pierwszego pliku).

Potrzebuję napisać skrypt, który będzie porównywał oba pliki, i jeśli w XML’u znajdzie numerek, ma przypisać do niego nazwę z pierwszego pliku.

Problem w tym, że nie wiem, w jaki sposób się za to zabrać - czy przypisać pierwszy plik do tabeli, następnie ją porównywać z drugim, czy linijka po linijce?

Założenie początkowe jest takie, że w XML’u wystąpi ten numer tylko raz, w gałęzi np. xxx.

Pierwszy plik ma mniej więcej taką postać:

001 nazwa1

002 nazwa2

003 nazwa3

Czyli muszę na podstawie numerka z XML’a wypisać nazwę.

Co do realizacji to zależy od wielkości pierwszego pliku, jeżeli jet mały to wczytałbym go do hasha. Możesz tez użyć jakiegoś parsera XML z CPAN, na pewno jest to pewniejsze rozwiązanie niż ręczna zabawa regexpami.

Pierwszy plik nie jest duży, max 99 linii.

Nie zmienia to fakty, że nie mam pojęcia, jak to zrobić. :confused:

Na CPAN szukałem rozwiązań, ale nie mogłem (umiałem?) znaleźć konkretnego.

Z perlem mam do czynienia od wczoraj dopiero, więc to dla mnie czarna magia…

Aaa jak masz do czynienia od wczoraj to lepiej poświęć więcej czasu na naukę Perla. Jak poduczysz się Perla to nie będziesz miał problemów z napisaniem takiego skryptu, proste i brutalne.

Heh, uczę się, uczę, ale jutro właściwie powinienem mieć takie coś chodzące:/ I jak na razie, to udało mi się porównywać podobne pliki na zasadzie linii, a to 2 różne formaty:/

No trudno, ale dzięki.

Ja zrobiłbym to tak, że pierwszy plik wczytuje do hasha. Drugi plik możesz potraktować XML::Simple, no ewentualnie możesz ręcznie regexpami, żeby skrypt był bardziej przenośny (bez zależności). Reszta jest prosta o ile zna się Perla.

XML::Simple nie wchodzi w rachubę, to ma latać między różnymi serwerkami, więc ręcznie. Dzięki, poczytam trochę jak to zrobić.