ezekiel has asked for the wisdom of the Perl Monks concerning the following question:
I have a tab-delimited text file of an unspecified number (say x) columns. I want to split this into x-1 separate tab-delimited text files where the first file contains just the first and second columns, the second file contains the first and third columns, etc.
As I don't know the number of columns in advance, the filehandles for the output files have to be variables. So I have the following code:
use strict; my $number_of_files = 0; while (<STDIN>) { chomp; my @line = split; # On the first list, set up the process if ($. == 1) { for (my $i = 1; $i < @line; $i++) { my $fh = "OUTPUT" . $i; my $filename = $line[$i] . ".txt"; open ($fh, ">$filename") or die "Cannot open the output fi +le: $!"; } $number_of_files = @line; } else { for (my $i = 1; $i < @line; $i++) { my $fh = "OUTPUT" . $i; print $fh ("$line[0]\t$line[$i]\n"); } } } for (my $i = 1; $i <= $number_of_files; $i++) { my $fh = "OUTPUT" . $i; close $fh or die "Cannot close the output file: $!"; }
The problem is I get a "Can't use string ("OUTPUT1") as a symbol ref while "strict refs" in use" error. Where have I gone wrong?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Multiple simultaneous filehandles
by gaal (Parson) on Oct 24, 2006 at 05:26 UTC | |
by eyepopslikeamosquito (Archbishop) on Oct 24, 2006 at 06:42 UTC | |
|
Re: Multiple simultaneous filehandles
by grep (Monsignor) on Oct 24, 2006 at 05:41 UTC | |
|
Re: Multiple simultaneous filehandles
by blazar (Canon) on Oct 24, 2006 at 12:15 UTC |