Cześć, czy możecie poratować mnie jakimś przykładem jak w perlu napisać skrypt który przetwarza każdą linijkę wg wzoru. Piszę sobie skrypt to importu płatności masowych i o ile z pocztą i pobraniem załącznika sobie poradziłem to teraz zatrzymałem się na analizowaniu pliku. Ewentualnie jakich funkcji użyć.
PS Jak skończę pisać i będzie działało to udostępnię dla potomnych (nieodpłatnie).
Łukasz Rostalski pisze:
Cześć, czy możecie poratować mnie jakimś przykładem jak w perlu napisać skrypt który przetwarza każdą linijkę wg wzoru. Piszę sobie skrypt to importu płatności masowych i o ile z pocztą i pobraniem załącznika sobie poradziłem to teraz zatrzymałem się na analizowaniu pliku. Ewentualnie jakich funkcji użyć.
PS Jak skończę pisać i będzie działało to udostępnię dla potomnych (nieodpłatnie).
plik masz moze w formacie csv ? w perlu masz Text::CSV
open(CSV,"<", plik.csv) while (<CSV>){ if ($csv->parse($_)) { my @columns = $csv->fields(); if ($columns[1] =~ /pattern/) { print "$1\n"; } }
cos takiego np
W dniu 1 grudnia 2011 14:45 użytkownik Łukasz Rostalski lukasz@rostalski.pl napisał:
Cześć, czy możecie poratować mnie jakimś przykładem jak w perlu napisać skrypt który przetwarza każdą linijkę wg wzoru. Piszę sobie skrypt to importu płatności masowych i o ile z pocztą i pobraniem załącznika sobie poradziłem to teraz zatrzymałem się na analizowaniu pliku. Ewentualnie jakich funkcji użyć.
PS Jak skończę pisać i będzie działało to udostępnię dla potomnych (nieodpłatnie).
Taki przykładzik: ------- open(SOMEFILE,filename); while (<SOMEFILE>) { $line = $_; if ($line =~ m/(^[0-9]{5,25}|)/) {
@fields = split(/|/,$line); $local = $fields[0]; $public = $fields[1]; }
print $local; print $public; } ------- W skrócie wygląda to tak: Pierwsza linijka otwiera plik, następnie w pętli: $line = $_; - odczytuje linię, Kolejna linijka dopasowuje linię do wzorca (w tym przypadku linia ma się zaczynać od ciągu cyfr o długości od 5 do 25 znaków następnie ma być znak "|" - polecam lekturę wyrażeń regularnych) i jeśli pasuje to rozbijam sobie linijkę na pola oddzielone znakiem "|' i wrzucam w oddzielne zmienne.
Ps. Dlaczego nie skorzystasz z gotowego cashimporta, który jest w LMS?
W dniu 2011-12-01 15:03, Łukasz Bujek pisze:
Taki przykładzik:
open(SOMEFILE,filename); while (<SOMEFILE>) { $line = $_; if ($line =~ m/(^[0-9]{5,25}|)/) {
@fields = split(/\|/,$line); $local = $fields[0]; $public = $fields[1]; }
print $local; print $public; }
W skrócie wygląda to tak: Pierwsza linijka otwiera plik, następnie w pętli: $line = $_; - odczytuje linię, Kolejna linijka dopasowuje linię do wzorca (w tym przypadku linia ma się zaczynać od ciągu cyfr o długości od 5 do 25 znaków następnie ma być znak "|" - polecam lekturę wyrażeń regularnych) i jeśli pasuje to rozbijam sobie linijkę na pola oddzielone znakiem "|' i wrzucam w oddzielne zmienne.
Ps. Dlaczego nie skorzystasz z gotowego cashimporta, który jest w LMS?
Dzięki o to chodziło. Chce mieć zautomatyzowany proces który wrzuca mi wszystko do bazy a ja tylko w lmsie zatwierdzam wpłaty. Z tego co widzę to do bzwbk nie ma takiego importu. Jedyny jaki znalazłem to lms-cashimport-bzwbk.php ale coś mi nie działa. Poza tym trzeba tam jawnie podać dane do logowania do banku a tego wolałbym uniknąć zwłaszcza że raporty przychodzą 3 razy dziennie na e-mail a to już dużo bardziej bezpieczne :)
W dniu 2011-12-01 15:03, Łukasz Bujek pisze:
W dniu 1 grudnia 2011 14:45 użytkownik Łukasz Rostalski lukasz@rostalski.pl napisał:
Cześć, czy możecie poratować mnie jakimś przykładem jak w perlu napisać skrypt który przetwarza każdą linijkę wg wzoru. Piszę sobie skrypt to importu płatności masowych i o ile z pocztą i pobraniem załącznika sobie poradziłem to teraz zatrzymałem się na analizowaniu pliku. Ewentualnie jakich funkcji użyć.
PS Jak skończę pisać i będzie działało to udostępnię dla potomnych (nieodpłatnie).
Taki przykładzik:
open(SOMEFILE,filename); while (<SOMEFILE>) { $line = $_; if ($line =~ m/(^[0-9]{5,25}|)/) {
@fields = split(/\|/,$line); $local = $fields[0]; $public = $fields[1]; }
print $local; print $public; }
Napotkałem mały problem. Moje wpisy wyglądają tak: 882773572|29112011|15.15|Jakaś nazwa odbiorcy|40109044280004000117544076|98797500048970000000000002|tytuł przelewu faktura xyz/wdf/2011 ok
Wzorzec: $line =~ m/(^[0-9]{9}|[0-9]{8})/)
my $description = $fields[6]; problem w tym że print $description daje tylko ty, czasami tytuł. Ogólnie ucina string.
Czy przyczyną może być wzorzec, który ogólnie wychwytuje wszystkie wpisy.
Trochę mi wstyd to upubliczniać, ale co tam ;) Patrz załącznik - może się przyda - jest tam fragment parsujący linijki w takim formacie.
Pisane kilka lat temu, na pewno działa do dziś w kilku firmach dla wyciągów z BZ WBK wysyłanych na maila..
W dniu 2011-12-08 11:16, Łukasz Rostalski pisze:
W dniu 2011-12-01 15:03, Łukasz Bujek pisze:
W dniu 1 grudnia 2011 14:45 użytkownik Łukasz Rostalski lukasz@rostalski.pl napisał:
Cześć, czy możecie poratować mnie jakimś przykładem jak w perlu napisać skrypt który przetwarza każdą linijkę wg wzoru. Piszę sobie skrypt to importu płatności masowych i o ile z pocztą i pobraniem załącznika sobie poradziłem to teraz zatrzymałem się na analizowaniu pliku. Ewentualnie jakich funkcji użyć.
PS Jak skończę pisać i będzie działało to udostępnię dla potomnych (nieodpłatnie).
Taki przykładzik:
open(SOMEFILE,filename); while (<SOMEFILE>) { $line = $_; if ($line =~ m/(^[0-9]{5,25}|)/) {
@fields = split(/\|/,$line); $local = $fields[0]; $public = $fields[1]; }
print $local; print $public; }
Napotkałem mały problem. Moje wpisy wyglądają tak: 882773572|29112011|15.15|Jakaś nazwa odbiorcy|40109044280004000117544076|98797500048970000000000002|tytuł przelewu faktura xyz/wdf/2011 ok
Wzorzec: $line =~ m/(^[0-9]{9}|[0-9]{8})/)
my $description = $fields[6]; problem w tym że print $description daje tylko ty, czasami tytuł. Ogólnie ucina string.
Czy przyczyną może być wzorzec, który ogólnie wychwytuje wszystkie wpisy.
W dniu 01.12.2011 14:45, Łukasz Rostalski pisze:
Cześć, czy możecie poratować mnie jakimś przykładem jak w perlu napisać skrypt który przetwarza każdą linijkę wg wzoru. Piszę sobie skrypt to importu płatności masowych i o ile z pocztą i pobraniem załącznika sobie poradziłem to teraz zatrzymałem się na analizowaniu pliku. Ewentualnie jakich funkcji użyć.
PS Jak skończę pisać i będzie działało to udostępnię dla potomnych (nieodpłatnie).
Witam wszystkich. To mój debiut na liście :)
Do jakiego banku piszesz, bo ja napisałem do IDEN BGŻ. Oczywiście też go udostępnie na GPL, ale najpierw muszę potestować. Import jest w php na postawie lms-cashimport-bgz.php, ale dodatkowo z zapisywaniem pobranego pliku w całości do bazy.
W dniu 2011-12-01 15:30, OSONET s.c. - Jan Michlik pisze:
W dniu 01.12.2011 14:45, Łukasz Rostalski pisze:
Cześć, czy możecie poratować mnie jakimś przykładem jak w perlu napisać skrypt który przetwarza każdą linijkę wg wzoru. Piszę sobie skrypt to importu płatności masowych i o ile z pocztą i pobraniem załącznika sobie poradziłem to teraz zatrzymałem się na analizowaniu pliku. Ewentualnie jakich funkcji użyć.
PS Jak skończę pisać i będzie działało to udostępnię dla potomnych (nieodpłatnie).
Witam wszystkich. To mój debiut na liście :)
Do jakiego banku piszesz, bo ja napisałem do IDEN BGŻ. Oczywiście też go udostępnie na GPL, ale najpierw muszę potestować. Import jest w php na postawie lms-cashimport-bgz.php, ale dodatkowo z zapisywaniem pobranego pliku w całości do bazy.
Do BZ WBK. Póki co robię w perlu bo jakoś tak wyszło. Ale pewnie za jakiś czas spróbuję przepisać do php, bo jakoś ten język mi łatwiej ogarnąć :)
W dniu 2011-12-01 14:45, Łukasz Rostalski pisze:
Cześć, czy możecie poratować mnie jakimś przykładem jak w perlu napisać skrypt który przetwarza każdą linijkę wg wzoru. Piszę sobie skrypt to importu płatności masowych i o ile z pocztą i pobraniem załącznika sobie poradziłem to teraz zatrzymałem się na analizowaniu pliku. Ewentualnie jakich funkcji użyć.
PS Jak skończę pisać i będzie działało to udostępnię dla potomnych (nieodpłatnie).
Napotkałem kolejny problem. Mam w skrypcie: my $converter = Text::Iconv->new("ISO-8859-2","UTF-8"); $description = $converter->convert($description);
ale bestia do bazy wrzuca mi krzaki zamiast polskich znaków. Print na konsolę pokazuje poprawnie polskie znaki (konsola wyświetla w utf-8).
MySQL ustawiony tak: init connect SET NAMES utf8 character set connection utf8 character set client utf8
Co to może być za problem, bo że z kodowaniem to widzę :)
On 02.12.2011 00:51, Łukasz Rostalski wrote:
Napotkałem kolejny problem. Mam w skrypcie: my $converter = Text::Iconv->new("ISO-8859-2","UTF-8"); $description = $converter->convert($description);
ale bestia do bazy wrzuca mi krzaki zamiast polskich znaków. Print na konsolę pokazuje poprawnie polskie znaki (konsola wyświetla w utf-8).
MySQL ustawiony tak: init connect SET NAMES utf8 character set connection utf8 character set client utf8
Skąd odczytujesz te ustawienia MySQL-a? Z Twojego skryptu, czy z niezależnej od skryptu konsoli? Upewnij się, że w skrypcie masz ustawione kodowanie utf8 przy połączeniu z bazą danych MySQL.
Co to może być za problem, bo że z kodowaniem to widzę :)
W dniu 2011-12-01 23:54, Tomasz Chiliński pisze:
On 02.12.2011 00:51, Łukasz Rostalski wrote:
Napotkałem kolejny problem. Mam w skrypcie: my $converter = Text::Iconv->new("ISO-8859-2","UTF-8"); $description = $converter->convert($description);
ale bestia do bazy wrzuca mi krzaki zamiast polskich znaków. Print na konsolę pokazuje poprawnie polskie znaki (konsola wyświetla w utf-8).
MySQL ustawiony tak: init connect SET NAMES utf8 character set connection utf8 character set client utf8
Skąd odczytujesz te ustawienia MySQL-a?
Ustawienia są z informacji w phpadminie.
On 02.12.2011 01:01, Łukasz Rostalski wrote:
W dniu 2011-12-01 23:54, Tomasz Chiliński pisze:
Skąd odczytujesz te ustawienia MySQL-a?
Ustawienia są z informacji w phpadminie.
To całkiem inne ustawienia dla połączenia z PHPMyAdmin niż te, które uzyskujesz ze skryptu perlowego. Sarenka napisał jeszcze bardziej szczegółowo.
Napotkałem kolejny problem. Mam w skrypcie: my $converter = Text::Iconv->new("ISO-8859-2","UTF-8"); $description = $converter->convert($description);
ale bestia do bazy wrzuca mi krzaki zamiast polskich znaków. Print na konsolę pokazuje poprawnie polskie znaki (konsola wyświetla w utf-8).
MySQL ustawiony tak: init connect SET NAMES utf8 character set connection utf8 character set client utf8
Co to może być za problem, bo że z kodowaniem to widzę :)
Na początku prześlij do MySQL`a komendę "SET NAME UTF-8" i masz duże szanse, że zadziała.
W dniu 2011-12-01 23:59, Sarenka pisze:
Napotkałem kolejny problem. Mam w skrypcie: my $converter = Text::Iconv->new("ISO-8859-2","UTF-8"); $description = $converter->convert($description);
ale bestia do bazy wrzuca mi krzaki zamiast polskich znaków. Print na konsolę pokazuje poprawnie polskie znaki (konsola wyświetla w utf-8).
MySQL ustawiony tak: init connect SET NAMES utf8 character set connection utf8 character set client utf8
Co to może być za problem, bo że z kodowaniem to widzę :)
Na początku prześlij do MySQL`a komendę "SET NAME UTF-8" i masz duże szanse, że zadziała.
I zadziałało, dzięki :)
PS Skrypcik prawie działa :)
W dniu 2011-12-02 00:06, Łukasz Rostalski pisze:
PS Skrypcik prawie działa :)
Witam, jako że skrypt w perlu nie działał tak jak trzeba napisałem nowy w php i znowu mam problem z kodowaniem.
Zaraz po połączeniu z bazą mam ustawione: mysql_query('SET NAME UTF-8'); mysql_query('SET CHARACTER SET UTF8');
tekst przepuszczam przez: $opis_pl = addslashes(iconv("ISO-8859-2","UTF-8",$opis));
i wrzucam do bazy. Niestety w bazie zamiast ś mam . Na stronie echo $opis_pl wyświetla się dobrze, tak że problem leży raczej po stronie importu do bazy. Jakieś sugestie?
W dniu 2011-12-13 16:29, Łukasz Rostalski pisze:
W dniu 2011-12-02 00:06, Łukasz Rostalski pisze:
PS Skrypcik prawie działa :)
Witam, jako że skrypt w perlu nie działał tak jak trzeba napisałem nowy w php i znowu mam problem z kodowaniem.
Zaraz po połączeniu z bazą mam ustawione: mysql_query('SET NAME UTF-8'); mysql_query('SET CHARACTER SET UTF8');
tekst przepuszczam przez: $opis_pl = addslashes(iconv("ISO-8859-2","UTF-8",$opis));
zamiast ISO dałem CP1250 i poszło jak trzeba.
uczestnicy (7)
-
Dawid Widyna
-
Kamil Kordas
-
OSONET s.c. - Jan Michlik
-
Sarenka
-
Tomasz Chiliński
-
Łukasz Bujek
-
Łukasz Rostalski