Hello
I'm processing a file of test data that looks something like:
FH1,data1,data2,data3,...etc
FH2,data1,data2,data3,...etc
FH1,data1,data2,data3,...etc
Each line split into an array and processed.
The first element (FH1, FH2, etc) is the name of the filehandle the
output should be printed to.
I'm trying to do something like:
use strict;
use warnings;
open (FH1, ">file1");
open (FH2, ">file2");
open (INPUT, "<inputfile");
while (<INPUT>)
{
...split line
...process data
...create output
my $FH = $split_line[0]
print $FH "$output\n";
}
But I get the error:
"Can't use string ("FH1") as a symbol ref while "strict refs" in use at
my_script.pl line 387, <INPUT> line 1."
I can get round it without too much difficulty with an if statement, but
I was wondering if there was a simple way to turn a string into a
filehandle. I've tried various things like:
my $FH = "\*$split_line[0]";
or
print \*$FH "$output\n";
or
changing the data to hold \*FH1 in the first field.
All to no avail.
The closest thing I've found is the following from the perldocs website:
$fh = SOME_FH; # bareword is strict-subs hostile
$fh = "SOME_FH"; # strict-refs hostile; same package only
$fh = *SOME_FH; # typeglob
$fh = \*SOME_FH; # ref to typeglob (bless-able)
$fh = *SOME_FH{IO}; # blessed IO::Handle from *SOME_FH
typeglob
But I don't think that answers my question (or if it does, I'm too dumb
to see that answer...)
Can anyone point me in the right direction?
Cheers
Andy
Capgemini is a trading name used by the Capgemini Group of companies which
includes Capgemini UK plc, a company registered in England and Wales (number
943935) whose registered office is at No. 1 Forge End, Woking, Surrey, GU21 6DB.
This message contains information that may be privileged or confidential and is
the property of the Capgemini Group. It is intended only for the person to whom
it is addressed. If you are not the intended recipient, you are not authorized
to read, print, retain, copy, disseminate, distribute, or use this message or
any part thereof. If you receive this message in error, please notify the
sender immediately and delete all copies of this message.
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/