Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: Copying a file to more than one separate directory and/or file

by stephen (Priest)
on Jun 13, 2001 at 19:58 UTC ( #88101=note: print w/ replies, xml ) Need Help??


in reply to Copying a file to more than one separate directory and/or file

Best way is to use File::Copy. The FAQ section you're referring to is dealing with tee-ing filehandles, so that anything one prints goes into three files (if I'm understanding which section you're talking about correctly). If you're simply copying files, it's easiest to simply copy the files. Using File::Copy, you could do something like:

use strict; use File::Copy; my $source = 'src1'; foreach my $dest ( 'dest_1', 'dest_2', 'dest_3' ) { copy($source, $dest); }

stephen


Comment on Re: Copying a file to more than one separate directory and/or file
Download Code
Re: Re: Copying a file to more than one separate directory and/or file
by grinder (Bishop) on Jun 13, 2001 at 20:51 UTC

    Depending on the size of the file, you may exhaust the machine's memory allocated to disk buffering, which means that if you use File::Copy you will physically reread the same disk sectors over and over again. If this is true, the most effecient method of writing to multiple files would be to read a line, and write it out to all the output files. Something like:

    my %fd = ( 'file1' => 'fd1', '/tmp/foo => 'fd2', '/home/me/file' => 'fd3', ); my $in = shift || die "No file specified.\n"; open IN. $in or die "Cannot open $in for input: $!\n"; foreach( keys %fd ) { open $fd{$_}, ">$_" or die "Cannot open $_ for output: $!\n"; } while( <IN> ) { foreach my $fd( keys %fd ) { print $fd $_; } } foreach( keys %fd ) { close $fd{$_}; }

    --
    g r i n d e r
      This line:
      foreach my $fd( keys %fd ) {
      should be:
      foreach my $fd( values %fd ) {
      and instead of reading it in line by line, it would be more efficient just to read a chunk of it at a time so instead of
      while( <IN> ) {
      use
      while( read(IN, $_, 4096) ) {

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (8)
As of 2014-12-29 10:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (186 votes), past polls