/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
perl vs. *mange* linier
Fra : Flemming Frandsen


Dato : 09-03-03 11:36

Jeg har et perl modul på 139606 linier (genereret af noget andet perl,
naturligtvis) og det ser ud til at perl ikke kan finde ud af at
rapportere linie numre som er større end 65536 (eller der omkring).

Modulet er et objektorienteret API til en database og det starter med en
Data::Dumper()'et struktur som fylder de første 42619 linier.

Når der er en fejl i koden (42 == undef f.eks.) så er linie numrene
wrappet og peger som regel på en linie i det metadata der er i starten,
så perls warnings er ikke så meget værd.

wc siger:
139606 435667 3818074 ZDB.pm

Har andre set det eller er jeg den eneste der er pervers nok til at have
perl moduler på 139606 liner?

--
Regards Flemming Frandsen - http://dion.swamp.dk
PartyTicket.Net co founder & Yet Another Perl Hacker


 
 
Mads Jensen (09-03-2003)
Kommentar
Fra : Mads Jensen


Dato : 09-03-03 20:45

Hej

> Har andre set det eller er jeg den eneste der er pervers nok til at have
> perl moduler på 139606 liner?

Det er nok bare upraktisk, både af vedligeholdelse (hvis du overhovedet
skulle bruge det).
Det er nok de færreste, der laver moduler/headerfiler så store, her tænkes
bare generalt, jeg har haft downloadet nogle kildekoder et par gange, og der
så det ud til at de altid var splittede op i funktioner/dele og så kædet
sammen igen.
Hvad med at gøre det samme ?

/mads




Peter Makholm (09-03-2003)
Kommentar
Fra : Peter Makholm


Dato : 09-03-03 20:48

"Mads Jensen" <astrup_jensen.NOSPAM@hotmail.com> writes:

> Det er nok bare upraktisk, både af vedligeholdelse (hvis du overhovedet
> skulle bruge det).

Med maskingenereret kode er det ofte lettest at generere en kæmpe stor
blob end at tænke på at lave nogle logisk overskulige opdelinger.

--
Peter Makholm | I congratulate you. Happy goldfish bowl to you, to
peter@makholm.net | me, to everyone, and may each of you fry in hell
http://hacking.dk | forever
| -- The Dead Past

Flemming Frandsen (10-03-2003)
Kommentar
Fra : Flemming Frandsen


Dato : 10-03-03 11:25

Peter Makholm wrote:
>>Det er nok bare upraktisk, både af vedligeholdelse (hvis du overhovedet
>>skulle bruge det).
> Med maskingenereret kode er det ofte lettest at generere en kæmpe stor
> blob end at tænke på at lave nogle logisk overskulige opdelinger.

Netop, modulet er genereret ud fra en masse (47) source filer (perl kode
self.) som er meget lette at vedligeholde.

Resultatet er et modul der indeholder 562 packages (aka. klasser),
hvoraf de 130 svarer til tabeller i databasen.

Det giver ingen mening at splitte filen op for inkonsistens imellem
klasserne kan have katastrofale følger og så ville det også være noget
rod med 562 eller 130 .pm'er i stedet for 1.

--
Regards Flemming Frandsen - http://dion.swamp.dk
PartyTicket.Net co founder & Yet Another Perl Hacker


Morten Guldager (10-03-2003)
Kommentar
Fra : Morten Guldager


Dato : 10-03-03 22:58

Mon, 10 Mar 2003 at 10:25 GMT Flemming Frandsen wrote
>
> Det giver ingen mening at splitte filen op for inkonsistens imellem
> klasserne kan have katastrofale følger og så ville det også være noget
> rod med 562 eller 130 .pm'er i stedet for 1.

Og stensikkert tungere at loade.

Hvis du ikke bruger dynamisk loadede moduler, og hele baduljen
derfor skal loades hver gang så er det langt lettere for filsystemet
blot at severe en stor fil frem for 130 små filer.


/Morten

Lars Balker Rasmusse~ (10-03-2003)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 10-03-03 23:02

Morten Guldager <spamtrap@mogul.dk> writes:
> Mon, 10 Mar 2003 at 10:25 GMT Flemming Frandsen wrote
>> Det giver ingen mening at splitte filen op for inkonsistens imellem
>> klasserne kan have katastrofale følger og så ville det også være noget
>> rod med 562 eller 130 .pm'er i stedet for 1.
>
> Og stensikkert tungere at loade.

Under antagelse af at perl-compileren kan arbejde i O(n)
--
Lars Balker Rasmussen                  "S.M.R.T."

Morten Guldager (12-03-2003)
Kommentar
Fra : Morten Guldager


Dato : 12-03-03 11:11

Mon, 10 Mar 2003 at 22:02 GMT Lars Balker Rasmussen wrote
>
> Under antagelse af at perl-compileren kan arbejde i O(n)

Øh? "O(n)"... hvad betyder det?


/Morten

Peter Makholm (11-03-2003)
Kommentar
Fra : Peter Makholm


Dato : 11-03-03 09:39

Flemming Frandsen <ff-news.tiscali.dk@partyticket.net> writes:

> Det giver ingen mening at splitte filen op for inkonsistens imellem
> klasserne kan have katastrofale følger og så ville det også være noget
> rod med 562 eller 130 .pm'er i stedet for 1.

Du vil kunne komme over denne begrænsning ved et import-hack. Når du
starter med at generere kode tager du lige en MD5sum af
sourcen. Hvert modul indenholder så en import-funktion:

sub import {
my ($class,$tag) = @_;
die "Inkonsistence of modules detected" if $tag ne <MD5sum>;
}

Så skal du i dit mastermodul lave noget ala:

use MyModule1 <MD5sum>;
use MyModule2 <MD5sum>;
[...]


Du kan selvfølgelig bruge allemulige andre tags end MD5summen. Du skal
bare passe lidt på hvis det opfattes som tal, for så tror perl at det
er et versionsnummer og opføre sig lidt anderledes.

--
Peter Makholm | I laugh in the face of danger. Then I hide until
peter@makholm.net | it goes away
http://hacking.dk | -- Xander

Flemming Frandsen (11-03-2003)
Kommentar
Fra : Flemming Frandsen


Dato : 11-03-03 12:21

Peter Makholm wrote:
> Du vil kunne komme over denne begrænsning ved et import-hack. Når du
> starter med at generere kode tager du lige en MD5sum af
> sourcen.

Labert trick, men TIMTOWTDI (altså ud over at fortælle perl at den skal
bruge 32 bit linie numre, det ville jo være for let), som tillader at
alt er i den samme fil, man lader blot kode generatoren indsætte # line
kommentarer i modulet i stil med:

# line 1 ZDB.pm.line.42000

Så vil en fejl i linie 42037 blive rapporteret som:
Replace programmer and try again at ZDB.pm.line.42000 line 37

Der er ret sjældent fejl i min kode (hoste) så jeg kan godt overkomme en
enkelt + operation for at finde linie nummeret

Alternativt skal man bare prøve at lægge 2^16-1 til og checke for fejl der:)

--
Regards Flemming Frandsen - http://dion.swamp.dk
PartyTicket.Net co founder & Yet Another Perl Hacker


Peter Makholm (11-03-2003)
Kommentar
Fra : Peter Makholm


Dato : 11-03-03 12:31

Flemming Frandsen <ff-news.tiscali.dk@partyticket.net> writes:

> tillader at alt er i den samme fil, man lader blot kode generatoren
> indsætte # line kommentarer i modulet i stil med:
>
> # line 1 ZDB.pm.line.42000

Det er altid et rart trick at kunne. Jeg lavede selv noget ligende da
jeg skulle bruge en wrapper til Apache::Log så den ikke bare altid
henviste til wrapperen nå den skrev i apaches log-fil.

--
Peter Makholm | Have you ever felt trapped inside a Klein bottle?
peter@makholm.net |
http://hacking.dk |

Peter Makholm (12-03-2003)
Kommentar
Fra : Peter Makholm


Dato : 12-03-03 11:16

Morten Guldager <spamtrap@mogul.dk> writes:

>> Under antagelse af at perl-compileren kan arbejde i O(n)
>
> Øh? "O(n)"... hvad betyder det?

At den tid det tager perl-compileren er liniært i $n$. Her skal $n$
nok opfattes som antallet af moduler.

--
Peter Makholm | What if:
peter@makholm.net | IBM bought Xenix from Microsoft instead of buying
http://hacking.dk | DOS?

Morten Guldager (12-03-2003)
Kommentar
Fra : Morten Guldager


Dato : 12-03-03 11:24

Wed, 12 Mar 2003 at 10:15 GMT Peter Makholm wrote
> Morten Guldager <spamtrap@mogul.dk> writes:
>
>>> Under antagelse af at perl-compileren kan arbejde i O(n)
>>
>> Øh? "O(n)"... hvad betyder det?
>
> At den tid det tager perl-compileren er liniært i $n$. Her skal $n$
> nok opfattes som antallet af moduler.

Jammen jeg var slet ikke ved perlkompileren. Min kommentar gik på
det underliggende filsystem.

Kun hvis perlkompileren kan læse flere moduler ind parallelt vil der
være en praktisk mulighed for at det går hurtigere.
Og så skal modulerne nok alligevel ligge på forskellige diske.


/Morten

Peter Makholm (12-03-2003)
Kommentar
Fra : Peter Makholm


Dato : 12-03-03 11:28

Morten Guldager <spamtrap@mogul.dk> writes:

> Jammen jeg var slet ikke ved perlkompileren. Min kommentar gik på
> det underliggende filsystem.

Det var jeg såmend heller ikke, kun ved O(n) som jeg opfattede at
spørgsmålet gik på.

--
Peter Makholm | 'Cause suicide is painless
peter@makholm.net | It brings on many changes
http://hacking.dk | And I can take or leave it if I please
| -- Suicide is painless

Lars Balker Rasmusse~ (12-03-2003)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 12-03-03 11:32

Peter Makholm <peter@makholm.net> writes:
> Morten Guldager <spamtrap@mogul.dk> writes:
>>> Under antagelse af at perl-compileren kan arbejde i O(n)
>>
>> Øh? "O(n)"... hvad betyder det?
>
> At den tid det tager perl-compileren er liniært i $n$. Her skal $n$
> nok opfattes som antallet af moduler.

Jeg tænkte nu mere i n = linier.

Hvis perl-compileren er overliniær, vil 10 filer af 10000 linier klart
være hurtigere at kompilere end 1 fil af 100000 linier, næsten uanset
hvad filsystemet så end måtte synes.
--
Lars Balker Rasmussen                  "S.M.R.T."

Thorbjoern Ravn Ande~ (10-03-2003)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 10-03-03 23:11

Flemming Frandsen <ff-news.tiscali.dk@partyticket.net> writes:

> Jeg har et perl modul på 139606 linier (genereret af noget andet perl,
> naturligtvis) og det ser ud til at perl ikke kan finde ud af at
> rapportere linie numre som er større end 65536 (eller der omkring).

Du har jo kildeteksten - har du kigget efter?

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn

Flemming Frandsen (11-03-2003)
Kommentar
Fra : Flemming Frandsen


Dato : 11-03-03 09:27

Thorbjoern Ravn Andersen wrote:
> Du har jo kildeteksten - har du kigget efter?

Nu ikke så kæk med det der RTFS noget:) Hvis man skal være rigtig spydig
i dag skal man svare med en google url:
http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&q=perl+line+numbers+16+bit&btnG=Google+Search

Det leder til en lille blurp om 16 bit linie numre her:
http://www.perl.com/pub/a/2000/04/p5pdigest/THISWEEK-20000423.html#Big_Line_Numbers

Oh well, det har heldigvis ikke været helt frugtesløst, jeg har jo
fundet ud af at mit modul har unikt mange linier...

BTW: Aarhus.pm, kl 17 i dag på bryggeriet?

--
Regards Flemming Frandsen - http://dion.swamp.dk
PartyTicket.Net co founder & Yet Another Perl Hacker


Thorbjoern Ravn Ande~ (11-03-2003)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 11-03-03 09:39

Flemming Frandsen <ff-news.tiscali.dk@partyticket.net> writes:

> Det leder til en lille blurp om 16 bit linie numre her:
> http://www.perl.com/pub/a/2000/04/p5pdigest/THISWEEK-20000423.html#Big_Line_Numbers

Undrer ikke. Man er selv ude om det med så store moduler :) Men der
blev henvist til en patch - så du er kørende nu?

> BTW: Aarhus.pm, kl 17 i dag på bryggeriet?

Er desværre udenbyes i andet ærinde (som dog allerede har medført øl),
men I plejer jo godt at kunne klare jer selv. Jeg vil dog gerne vide
om Lasse drikker flere øl end Balker, og gerne med mellemtider således
at man kan vide om der er blevet hentet og tabt omgange!

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn

Steen Suder, privat (11-03-2003)
Kommentar
Fra : Steen Suder, privat


Dato : 11-03-03 14:59

Flemming Frandsen wrote:
<KLIP>

> BTW: Aarhus.pm, kl 17 i dag på bryggeriet?

Hvordan kender man jer?
Det kunne være at jeg kunne finde på at se forbi senere.

--
Mvh. / Best regards,
Steen Suder      <http://www.suder.dk/>
ICQ UIN         4133803


Lars Balker Rasmusse~ (11-03-2003)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 11-03-03 15:16

"Steen Suder, privat" <sfs_news@suder.dk> writes:
> Flemming Frandsen wrote:
>> BTW: Aarhus.pm, kl 17 i dag på bryggeriet?
>
> Hvordan kender man jer?

Det er dit mindste problem

> Det kunne være at jeg kunne finde på at se forbi senere.

Vi smutter nok på XL og spiser, så ikke alt for "senere".
--
Lars Balker Rasmussen                  "S.M.R.T."

Steen Suder, privat (11-03-2003)
Kommentar
Fra : Steen Suder, privat


Dato : 11-03-03 15:21

Lars Balker Rasmussen wrote:
> "Steen Suder, privat" <sfs_news@suder.dk> writes:
>
>>Flemming Frandsen wrote:
>>
>>>BTW: Aarhus.pm, kl 17 i dag på bryggeriet?
>>
>>Hvordan kender man jer?
>
>
> Det er dit mindste problem
>
>
>>Det kunne være at jeg kunne finde på at se forbi senere.
>
>
> Vi smutter nok på XL og spiser, så ikke alt for "senere".

Arhh! Kommer for lidt til byen.... hvad/hvor er XL?
Og hvornår er "senere" ca.?
Hvis man kun vil drikke øl, hvornår dukker man så op (hvornår er man ca.
færdig med at spise)? (Og hvor henne?)

--
Mvh. / Best regards,
Steen Suder      <http://www.suder.dk/>
ICQ UIN         4133803


Steen Suder, privat (11-03-2003)
Kommentar
Fra : Steen Suder, privat


Dato : 11-03-03 15:22

Steen Suder, privat wrote:
> Lars Balker Rasmussen wrote:

<KLIP>

>> Vi smutter nok på XL og spiser, så ikke alt for "senere".

> Arhh! Kommer for lidt til byen.... hvad/hvor er XL?

Jeg mente naturligvis "Arghh!"

<KLIP>

--
Mvh. / Best regards,
Steen Suder      <http://www.suder.dk/>
ICQ UIN         4133803


Lars Balker Rasmusse~ (11-03-2003)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 11-03-03 15:43

"Steen Suder, privat" <sfs_news@suder.dk> writes:
>> Vi smutter nok på XL og spiser, så ikke alt for "senere".
>
> Arhh! Kommer for lidt til byen.... hvad/hvor er XL?

Restaurant på Clemens Bro.

> Og hvornår er "senere" ca.?

Kommer lidt an på folk, men det ku sagtens være mellem 18 og 19.

> Hvis man kun vil drikke øl, hvornår dukker man så op

Kl 17 :)

> (hvornår er man ca. færdig med at spise)? (Og hvor henne?)

Mødet hæves sikkert efter XL - men vi kan godt finde på at blive
siddende et stykke tid.
--
Lars Balker Rasmussen                  "S.M.R.T."

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste