in reply to Opening Multiple FileHandles w/ Simpler Code

You can open them in a loop or map, filling an array or hash with references to the handles.

my @handles = map {FileHandle->new("> $_")} @filenames; $handles[3]->print( 'Message to the fourth handle.', $/); $_->print('Message to all handles', $/) for @handles;

After Compline,
Zaxo

Replies are listed 'Best First'.
Re^2: Opening Multiple FileHandles w/ Simpler Code
by Anonymous Monk on Aug 09, 2005 at 19:10 UTC
    Absolutely Brilliant! Perfection! Thanks!

      Just keep in mind that certain constructs, such as < > do not accept lexical handles unless they are in "simple" variables. E.g.

      while ( <$handles[ 3 ]> ) { # do something with last line read }
      won't work. You need to do something like this:
      while ( defined( my $line = $handles[ 3 ]->getline ) ) { # do something with $line }
      or
      frobnicate( $handles[ 3 ]->getline ) until $handles[ 3 ]->eof;
      or, if you really prefer to avoid invoking methods on then handle, the you can do this
      my $tmp = $handles[ 3 ]; while ( <$tmp> ) { # go crazy }

      the lowliest monk