Hi Folks,
I am reading in a file in paragraph mode to suck in records that I parse out
identifier information and then setting that record to a file handle (at least
I think I am doing it correctly), and then using this as the file handle for
rcols to suck in the data using an INCLUDE statement.
However, I am not getting the data even though it indicates that it is reading
the correct number of data points.
Here is the code that I am using and some sample data.
******* Read in Paragraph Mode ************
pdl> $/ = "=====\n" ; # Set the input record separator for paragraph mode
pdl> open $fh, "<", "test.txt" or die "can't open test.txt\n" ; # open a
filehandle in paragraph mode
pdl> while (<$fh>) { print $_; print "\nnext\n"; } # Verify that records are
being brought in as expected.
Attribute Name: Sector Receive Power
TimeStamp: 2000/06/27-20:02:20.930
Source Node Id: 0x00806050
MO Instance: 2
Count: 20
Ant 0 Rx Pwr Ant 1 Rx Pwr (1/16 dBfw)
191 182
190 180
190 181
189 181
187 180
186 179
184 177
185 177
188 180
190 182
186 179
185 179
185 179
184 178
184 178
186 179
193 181
196 182
190 180
187 179
=====================================================
next
******* Try in memory file handle for rcols: Attempt #1 ************
pdl> close $fh ; # Close the file handle to reset
pdl> open $fh, "<", "test.txt" or die "can't open test.txt\n" ; #Re-open
filehandle - still in paragraph mode.
pdl> while (<$fh>) {
open $rcol, "<", \$_ or die "can't open stream\n"; #create an in memory file
handle for rcols
($rx0, $rx1) = rcols $rcol, { INCLUDE => '/\s+\d+\s+\d+/' }; # pull out the
data elements
close $rcol; } # close the file for the next open.
GLOB(0xafc73f4)Reading data into piddles of type: [ Double Double Double Double
Double Double Double Double Double Double Double Double Double Double Double
Double Double Double Double Double Double Double Double Double Double Double
Double Double ]
Read in 1 elements.
Reading data into piddles of type: [ Double Double Double Double Double Double
Double Double Double Double Double Double Double Double Double Double Double
Double Double Double Double Double Double Double Double Double Double Double
Double Double Double Double Double Double Double Double Double Double Double
Double Double Double Double Double Double Double Double Double Double Double
Double Double Double Double Double Double Double Double Double Double Double
Double Double Double Double Double Double ]
Read in 1 elements.
Warning: rcols() did not read in any data.
pdl> p $rx0
Use of uninitialized value $_[0] in print at (eval 352) line 5, <> chunk 34.
pdl> p $rx1
Use of uninitialized value $_[0] in print at (eval 352) line 5, <> chunk 34.
******* Try in memory file handle for rcols: Attempt #2 ************
pdl> close $fh; #start again
pdl> open $fh, "<", "test.txt" or die "can't open test.txt\n"
pdl> while (<$fh>) {
open $rcol, "<", \$_ or die "can't open stream\n";
($rx0, $rx1) = rcols $rcol, { INCLUDE => '/\s+\d+\s+\d+/' };
print "$rx0, \t $rx1\n"; # try printing out the values since I am not
appending.
close $rcol; }
Reading data into piddles of type: [ Double Double Double Double Double Double
Double Double Double Double Double Double Double Double Double Double Double
Double Double Double Double Double Double Double Double Double Double Double ]
Read in 1 elements.
[0], [0]
Reading data into piddles of type: [ Double Double Double Double Double Double
Double Double Double Double Double Double Double Double Double Double Double
Double Double Double Double Double Double Double Double Double Double Double
Double Double Double Double Double Double Double Double Double Double Double
Double Double Double Double Double Double Double Double Double Double Double
Double Double Double Double Double Double Double Double Double Double Double
Double Double Double Double Double Double ]
Read in 1 elements.
[0], [0]
Warning: rcols() did not read in any data.
Use of uninitialized value $rx0 in concatenation (.) or string at (eval 458)
line 5, <> chunk 1.
Use of uninitialized value $rx1 in concatenation (.) or string at (eval 458)
line 5, <> chunk 1.
Any ideas on what I am doing wrong? The data files that I will be parsing are
larger than my memory so I am trying to chunk it down and use append/cat to
grow the pdls to conserve memory.
Thanks,
CLIFF SOBCHUK
Ericsson
Core RF Engineering
Calgary, AB, Canada
Phone 613-667-1974 ECN 8109 x71974
Mobile 403-819-9233
[email protected] <mailto:[email protected]>
yahoo: sobchuk
http://www.ericsson.com/
"The author works for Telefonaktiebolaget L M Ericsson ("Ericsson"), who is
solely responsible for this email and its contents. All inquiries regarding
this email should be addressed to Ericsson. The web site for Ericsson is
www.ericsson.com."
This Communication is Confidential. We only send and receive email on the basis
of the terms set out at www.ericsson.com/email_disclaimer
<http://www.ericsson.com/email_disclaimer>
_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl