[LUGOS] Obdelovanje dn v perlu-dodatek
matjaz.demsar at lj-mlek.si
matjaz.demsar at lj-mlek.si
Thu Jul 6 09:47:17 CEST 2006
matjaz.demsar at lj-mlek.si wrote:
>
> Prehitro sem poslal prejšnje sporočilo, se opravičujem
>
> Tole je skripta:
>
> #!/usr/bin/perl -w
> use DBI;
>
> $dbh = DBI->connect('DBI:mysql:lmprint;host=myhost', 'myuser',
> 'mypass', { RaiseError =>1 });
>
> open(F1,"/tmp/test.csv");
> while($line = <F1>) {
> if ($line =~ /^(\S+)\.\S+\,(\d+)\,(\d+)\,(\d+)\.\d+/) {
> $insert = "INSERT INTO report_current_month(printer,
> jobs, pages, cost) VALUES('$1','$2','$3','$4')";
> $sth = $dbh->prepare($insert);
> $sth->execute;
> }
> }
> close(F1);
>
> Težava je v obliki podatkov. Ti so zapisani v obliki
>
> TALLY_T6180_VRS.Skladisca.Logistika.Trzenje.Ljubljana.LM,3,17,126
>
> Za obdelavo potrebujem samo ime tiskalnika, torej TALLY_T6180_VRS, v
> bazo pa skripta vpiše
> "TALLY_T6180_VRS.Skladisca.Logistika.Trzenje.Ljubljana". To je
> logično, ker perl dela v "greedy" načinu in pobere čim več do zadnje
> pike. Telovadil sem tudi z ? vendar rezultat ni bil v okviru
> pričakovanega :(
>
> Ima kdo mogoče kakšno idejo, kako bi odrezal string pri prvi piki?
>
> Hvala in lep pozdrav,
>
> Matjaž
> ------------------------------------------------------------------------
>
> _______________________________________________
> lugos-list mailing list
> lugos-list at lugos.si
> http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-list
>
Moj predlog: prebereš vrstico in jo s split razbiješ glede na separator
while(<>){
($atributA,$atributB,$atributC)=split/\./;
...
}
v tvojem primeru imaš zdaj ime tiskalnika v spremenljivki $atributA
LP, Andrej
_______________________________________________
lugos-list mailing list
lugos-list at lugos.si
http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-list
Deluje, najlepša hvala za pomoč.
#!/usr/bin/perl -w
use DBI;
$dbh = DBI->connect('DBI:mysql:lmprint;host=kikimora.local.lj-mlek.si',
'lmprint', 'lmprint', { RaiseError =>1 });
open(F1,"/tmp/test.csv");
open(F2,">/root/mojedelo/output");
while($line = <F1>) {
if ($line =~ /^(\S+)\.\S+\,(\d+)\,(\d+)\,(\d+)\.\d+/) {
@printer = split(/\./, $1);
$insert = "INSERT INTO report_current_month(printer, jobs,
pages, cost) VALUES('$printer[0]','$2','$3','$4')";
$sth = $dbh->prepare($insert);
$sth->execute;
}
}
close(F2);
close(F1);
LP
Matjaž
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://liste2.lugos.si/pipermail/lugos-list/attachments/20060706/5b136d3c/attachment.htm
More information about the lugos-list
mailing list