binmode(STDOUT); for my $file ( @ARGV ) { open(FILE,"<$file") or die "Can't read $file: $!\n"; binmode(FILE); print "$file: ",-s $file,$/; while() { print; } } #### binmode(STDIN); my $file; while( defined( $file= ) ) { chomp $file; $file =~ s/: (\d+)$// or die "Invalid header: $file\n"; my $size= $1; open(FILE,">$file") or die "Can't create $file: $!\n"; warn "Extracting $size bytes to $file...\n"; my $len= $size < 4096 ? $size : 4096; my $read; while( $read= sysread(STDIN,$rec,$len) ) { $size -= $read; $len= $size if $size < $len; print FILE $rec; } }