Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Re^4: How can you sysread an entire file?

by NeilF (Sexton)
on Jan 14, 2006 at 17:22 UTC ( #523187=note: print w/replies, xml ) Need Help??

in reply to Re^3: How can you sysread an entire file?
in thread How can you sysread an entire file?

OK :)

Here's an example...

my $rec; sysopen(DF,"test.txt", O_RDONLY | O_CREAT); sysread(DF, $rec, -s DF); close DF; # Split up records into array. # Will lose \n on recs - add later. @test=split("\n",$rec); # Do some work on @test Work... Work... Work... # Build up into a single record, putting \n back in my $rec;foreach(@test){$rec.=$_."\n";} sysopen(DF,"test.txt", O_WRONLY | O_CREAT); syswrite DF,$rec; close DF;
Does that help set the scene a little better? :)

So basically I want to make this as efficient as possible. I have to use SYSREAD and SYSWRITE to make the IO as optimal as possible. ie: Reading a 1 meg file would take 2000 IO processes if buffered!!!!! SYSREAD will in effect take 1!

Replies are listed 'Best First'.
Re^5: How can you sysread an entire file?
by BrowserUk (Pope) on Jan 14, 2006 at 17:56 UTC

    It won't affect your IO count but

    my $rec;foreach(@test){$rec.=$_."\n";}

    Is much better coded as

    my $rec = join "\n", @test;

    roughly 3 times faster on 1000 elements.

    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
      Thanks! Anything like that is most appreciated!

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://523187]
[zarath]: only the ones that live on tofu

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (12)
As of 2017-05-24 14:09 GMT
Find Nodes?
    Voting Booth?