virtual file concatenation

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View

When refactoring code to read from more than one file in sequence, I will
occasionally use somthing like this, which works but makes me
feel dirty:

open my $fh, "cat file1 file2 file3 |" or die $!;
while(<$fh>) {

I'd rather virtually concatenate file handles, like this:

## $fh1 $fh2 $fh3 are already open read handles
my $fh= IO::Something->new($fh1,$fh2,$fh3);
while (<$fh>) {

where $fh is an object of a class inheriting from IO::Handle (but probably
not from IO::Seekable, although that would be nice) which will read from
$fh1 until the end, then from $fh2, then from $fh3.

I've looked in CPAN but haven't seen anything, which kind of surprised me.
Is there something I've overlooked?  If not, would this be a worthwhile


-------------------- http://NewsReader.Com/ --------------------
Usenet Newsgroup Service                        $9.95/Month 30GB

Re: virtual file concatenation wrote:
Quoted text here. Click to load it

@ARGV = qw/ file1 file2 file3 /;
while ( <> ) {

Quoted text here. Click to load it

for my $fh ( $fh1, $fh2, $fh3 ) {
    while ( <$fh> ) {

Perl isn't a toolbox, but a small machine shop where you can special-order
certain sorts of tools at low cost and in short order.       -- Larry Wall

Site Timeline