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: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to