ho trovato un programmino perl che usa la funzione pack("N2a" etc etc
mi han detto che converte dei numeri in "32-bit signed big-endian integers" , con ActivePerl per winzozz non funziona sta cosa
i dati da passare al "pack" li conosco tutti e il ho in una tabella excel vorrei far una formula equivalente lasciando stare conversione perl e riconversione, si puo fare?
questo il prog :
a cui dovrei dare in pasto :
per ottenere:
la parte che mi da il pack sono tutti i simboli strani
mi han detto che converte dei numeri in "32-bit signed big-endian integers" , con ActivePerl per winzozz non funziona sta cosa


i dati da passare al "pack" li conosco tutti e il ho in una tabella excel vorrei far una formula equivalente lasciando stare conversione perl e riconversione, si puo fare?
questo il prog :
codice:
#!/usr/bin/perl eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if $running_under_some_shell; # this emulates #! processing on NIH machines. # (remove #! line above if indigestible) $/ = "\r\n"; # set input record separator $\ = "\r\n"; # set output record separator open IDX, ">idx"; while (<>) { chomp; if ($. == 1) { s/^.*CATURL/Glambda- CATIDX/; print IDX $_; } if ($. == 2) { $n = (@a = split(/\|/)); $offset = 0; for $i (0 .. $n-1) { @b = split(/:/, $a[$i]); if ($b[0] eq 'POSWGS') { if ($offset) { $Spos = "x" . $offset . "a" . $b[2]; } else { $Spos = "a" . $b[2]; } } if ($b[0] eq 'NAME') { if ($offset) { $Sname = "x" . $offset . "a" . $b[2]; } else { $Sname = "a" . $b[2]; } $namelen = $b[2]; } $offset += $b[2]; } } if ($. > 2) { @pos = split(/,/, unpack ($Spos, $_)); $name = unpack ($Sname, $_); @rec = ( @pos, $name ); push @data, [ @rec ]; } } $idlen = int(log($#data)/log(10) + 1); $delta = ($#data - 2) / int($#data / 50 + .9999); print IDX "ID:I:$idlen|POS:P:8|NAME:S:$namelen|_:S:0"; $j = 0; LOOP: for $i (0 .. $#data) { next LOOP if ($i < $j); $S = $S . pack("N2",$i,$data[$i][0]) . "|"; $j += $delta; } print IDX substr($S, 0, length($S) - 1) . "\0"; for $i (0 .. $#data) { print IDX sprintf("%*s", $idlen, $i) . pack("N2a" . $namelen, $data[$i][0], $data[$i][1], $data[$i][2]); } close IDX;
codice:
CATURL-eng/sf_41009.htm_ POSWGS:S:20|VILLAGE:S:30|CITY:S:31|NAME:S:35|STREE T:S:44|HOUSENUMBER:S:4|PHONE:S:17|COUNTRY:S:16|ENT P1:S:20|ENTP2:S:18|ENTP3:S:0|ENTP4:S:0|ENTP5:S:0|E NTP6:S:0|ENTP7:S:0|ENTP8:S:0|ENTP9:S:0|BRANDNAME:S :0|_:S:3 -184146484,335737713 LAS PALMAS DE GRAN CANARIA NEON DANCING CALLE LUIS MOROTE 61 +34928266079 ESPAA -184146484,335737713 ___ -112663196,462023829 CASCAIS DISCOTECA NEWS +351214857325 PORTUGAL -112663196,462023829 ___ -112410389,461600059 CASCAIS DISCOTECA COCONUTS AVENIDA REI HUMBERTO II DE ITLIA +351214844109 PORTUGAL -112410389,461600059 ___ -112368871,464839419ERICEIRA MAFRA OURIO RUA CAPITO JOO LOPES 8 +351261862138 PORTUGAL -112368871,464839419 ___ -111375183,468468070PRAIA DA AREIA BRANCA LOURINH FOZ BAR PASSEIO DO MAR +351261471124 PORTUGAL -111375183,468468070 ___ -110906435,461852388 OEIRAS WALL STREET BAR & BISTRO ESTRADA DE PAO DE ARCOS +351214411292 PORTUGAL -110906435,461852388 ___ -109986477,462354899VENDA NOVA AMADORA ABEAS CORPUS RUA HENRIQUE DE PAIVA COUCEIRO 8 +351214351918 PORTUGAL -109986477,462354899 ___ -109759202,462343327 LISBOA BOITE BATUCADA RUA DR. JOO DE BARROS 5 +351217162506 PORTUGAL -109759202,462343327 ___ -109550061,462868029 ODIVELAS BY AVENIDA AMLIA RODRIGUES 49 +351219313430 PORTUGAL -109550061,462868029 ___ -109498760,461707552 LISBOA Z +351213973948 PORTUGAL -109498760,461707552 ___ -109492914,461709103 LISBOA ZONA DOCA +351213972010 PORTUGAL -109492914,461709103 ___ -109491005,461709581 LISBOA CELAT & IBEROS +351213976037 PORTUGAL -109491005,461709581 ___
per ottenere:
codice:
Glambda- CATIDX-eng/sf_41009.htm ID:I:4|POS:P:8|NAME:S:35|_:S:3 %| 2~| d6^| >,| U| M*2| ,^)| ^t| c-| ?>{| ~| &Ԛ| X | +F| _X| g| \^| R:| \| #| j| H| <B| n=| *W| k%| H| 6j| h X| | r>| >o| 0_| bu"| P| 3| | * | \.!| b| n| o| $q>| V|-| @| | i| *| P| a,| <&| IQ| [Mu| Ja| |e]| T| | ݘ| Dd| v| Z| 7n| Jb| >ee| pu*[| ͛| C0| | 8[| j,&| S| /1| NX;| .m| `Y| | | ə| (| ZD| S| *| K| s| LR| ~| | @e| r'| F| xA| uT| å| | ;2| m | FO(| J| )| 5 | g | S| )k| h=| & V| Xp| | | [| *;\| RI2| | | @| | L| ~#| *}| _P| Vti 0%qNEON DANCING ___ 1HdDISCOTECA NEWS ___ 2Lu;DISCOTECA COCONUTS ___ 3McOURIO ___ 4\AfFOZ BAR ___ 5cNWALL STREET BAR & BISTRO ___ 6qSABEAS CORPUS ___ 7u5̟BOITE BATUCADA ___ 8xf=BY ___ 9y.x Z ___ 10yEN/ZONA DOCA ___ .....
