Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re^4: 3-byte representation

by BrowserUk (Patriarch)
on Oct 13, 2011 at 12:36 UTC ( [id://931210]=note: print w/replies, xml ) Need Help??


in reply to Re^3: 3-byte representation
in thread 3-byte representation

Add binmode OUT after the open.

Also,

  1. you should be using a mode of '>' not '>>', unless your intention is to append to an existing file.
  2. for($i=1;$i<10001;$i++){ is more easily and clearly written as for my $i ( 1 .. 10000 ) {
  3. int(rand(20000))+440000 produces always positive integer.

    If you don't need signed integers, your question would have been much simpler to answer.

  4. $k=substr(pack('l>',$j),1); print OUT $k;

    Packing and writing one value at a time is hugely expensive compared to packing all 10000 values in a single pass and then writing them once.

  5. For goodness sake, use a little horizontal whitespace.

    Don't you find this infinitely more readable?

    #!/usr/bin/perl use strict; print "Content-type: text/html\n\n"; srand(); my $fil = "ch"; open( OUT, '>', $fil ) or die $!; binmode OUT; for my $i ( 1 .. 10_000 ) { my $j = int( rand( 20_000 ) ) + 440_000; my $k = substr( pack( 'l>', $j ), 1 ); print OUT $k; } close( OUT ); print "DONE !";

    Remember that your source code is the equivalent of the professional chef's plated up meal.

    His presentation is what makes the difference between a paid for cover and a decent home cooked meal. It is both his edge and his profit margin.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^5: 3-byte representation
by gerleu (Novice) on Oct 13, 2011 at 14:21 UTC

    Hi BrowserUk, Many thanks for your pertinent remarks and sorry for my bad code formatting, especially from a guy whose his father was a French cooking chief :-) In fact I append many integer values thus the ">>". And they could be negative, because they are latitudes and longitudes worldwide. I was also using the old fashioned format in the "for" loop... But despite using the "binmode" instruction, the resulting file is longer than 30000 chars for 10000 iterations, typically 30035 !!! Please, do you have any idea for this strange behaviour ?

      do you have any idea for this strange behaviour ?

      Frankly, no. When I run the version I posted on my system:

      C:\test>del ch C:\test>type junk4.pl #!/usr/bin/perl use strict; srand(); my $fil = "ch"; open( OUT, '>>', $fil ) or die $!; binmode OUT; for my $i ( 1 .. 10_000 ) { my $j = int( rand( 20_000 ) ) + 440_000; my $k = substr( pack( 'l>', $j ), 1 ); print OUT $k; } close( OUT ); print "DONE !"; C:\test>junk4 DONE ! C:\test>dir ch Volume in drive C has no label. Volume Serial Number is 8C78-4B42 Directory of C:\test 13/10/2011 15:29 30,000 ch 1 File(s) 30,000 bytes 0 Dir(s) 119,252,598,784 bytes free

      I get exactly the result you'd expect?

      Are you running it via a webserver? If so, maybe that has something to do with it, but that's not my arena.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

        Your code works perfectly on my system ! But if I replace

        open( OUT, '>>', $fil ) or die $!;
        by
        open(OUT, '>>'.$fil);
        then the problem occurs !

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://931210]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (6)
As of 2024-04-19 11:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found